jsf - 有条件地显示 JSF 组件

标签 jsf components conditional-rendering

首先,我是 Java EE 的新手,拥有强大的 ASP .NET 开发背景。 我浏览过网络,我可能会错过这一点,但似乎没有关于如何将支持 bean 类连接到 JSF 组件的简单且直接的教程。

一个很好的例子是这样的,目前我正在尝试创建一个 JSF 页面,其中有一组链接作为菜单栏和一组表单。我计划做的是,当单击链接时,将呈现特定的表单。

在 ASP.NET 中,我可以轻松检索元素,然后将属性设置为可显示。我想知道是否有简单的方法(哎呀,甚至任何方法)在 JSF 中执行此操作。

表单已经在页面中,只需在单击特定链接时将“render”属性设置为 true 即可。

最佳答案

是的,使用 rendered属性。

<h:form rendered="#{some boolean condition}">

您通常将其绑定(bind)到模型,而不是让模型抓取组件并操纵它。

例如

<h:form rendered="#{bean.booleanValue}" />
<h:form rendered="#{bean.intValue gt 10}" />
<h:form rendered="#{bean.objectValue eq null}" />
<h:form rendered="#{bean.stringValue ne 'someValue'}" />
<h:form rendered="#{not empty bean.collectionValue}" />
<h:form rendered="#{not bean.booleanValue and bean.intValue ne 0}" />
<h:form rendered="#{bean.enumValue eq 'ONE' or bean.enumValue eq 'TWO'}" />

注意 keyword based EL operators 的重要性如gt , ge , lelt而不是> , >= , <=<作为尖括号<>是 XML 中的保留字符。另请参阅相关问答:Error parsing XHTML: The content of elements must consist of well-formed character data or markup .

对于您的具体用例,我们假设链接传递如下参数:

<a href="page.xhtml?form=1">link</a>

然后您可以显示如下形式:

<h:form rendered="#{param.form eq '1'}">

(#{param} 是一个隐式 EL 对象,引用代表请求参数的 Map)

另请参阅:

关于jsf - 有条件地显示 JSF 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4870462/

相关文章:

java - Primefaces 选择列表目标和源值不会改变

swift - 将 SKPhysicsContact 放置在 GKComponent 中

javascript - React 中多语言应用程序的条件渲染

java - 使用 faces-config.xml 初始化 JSF bean

jsf - 如何重写JSF h :table into h:panelGrid

jsf - 如何在 primefaces p :password 中强制使用强密码

performance - 如何在 React 中进行组件池?

architecture - wso2 和 ESB 有什么区别?

validation - 仅当验证通过时才使用 ajax 有条件地渲染组件

reactjs - 单击三个按钮之一后如何显示特定按钮的内容?单击其中一个按钮后,应隐藏所有按钮