有条件地显示JSF组件
首先,我是Java EE新手,来自强大的ASP .NET开发背景。 我已经通过networking,我可能会错过这个,但似乎没有简单的和直接的关于如何将支持bean类连接到JSF组件的教程。
一个很好的例子是这样的,目前我正在尝试创build一个JSF页面,其中有一组链接作为菜单栏和一组表单。 我打算做的是,点击一个链接时,会呈现一个特定的表单。
在ASP.NET中,我可以轻松地检索元素,然后将该属性设置为可显示。 我想知道是否有简单的方法(甚至任何方式)在JSF中做到这一点。
表单已经在页面中,只要点击一个特定的链接就可以将“render”属性设置为true。
是的,使用rendered
属性。
<h:form rendered="#{some boolean condition}">
您通常将其绑定到模型上,而不是让模型抓取组件并对其进行操作。
例如
<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'}" />
注意基于关键字的EL操作符的重要性,如gt
, ge
, le
和lt
而不是>
, >=
, <=
和<
作为尖括号<
和>
是XML中的保留字符。 另请参阅相关的问答: parsingXHTML时出错:元素的内容必须包含格式正确的字符数据或标记 。
至于你的具体用例,让我们假设链接传递一个参数如下:
<a href="page.xhtml?form=1">link</a>
然后你可以显示如下的表单:
<h:form rendered="#{param.form eq '1'}">
( #{param}
是引用表示请求参数的Map
的隐式EL对象)
也可以看看:
- Java EE 6教程 – expression式语言
- 如果列表不为null并且size()> 0,那么如何显示JSF组件
- 为什么我需要在另一个组件中使用rendered =“#{some}”嵌套一个组件,当我想要更新它时?
除了以前的post你可以有
<h:form rendered="#{!bean.boolvalue}" /> <h:form rendered="#{bean.textvalue == 'value'}" />
Jsf 2.0