有条件地显示JSF组件

Hai*_*uha 76 jsf components conditional-rendering

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

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

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

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

Bal*_*usC 151

是的,使用该rendered属性.

<h:form rendered="#{some boolean condition}">
Run Code Online (Sandbox Code Playgroud)

您通常将其绑定到模型而不是让模型抓住组件并对其进行操作.

例如

<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'}" />
Run Code Online (Sandbox Code Playgroud)

注意的重要性基于关键字EL运营商gt,ge,lelt代替>,>=,<=<作为角度括号<>在XML保留字符.另请参阅此相关问答:解析XHTML时出错:元素的内容必须包含格式良好的字符数据或标记.

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

<a href="page.xhtml?form=1">link</a>
Run Code Online (Sandbox Code Playgroud)

然后,您可以显示以下表单:

<h:form rendered="#{param.form eq '1'}">
Run Code Online (Sandbox Code Playgroud)

(这#{param}是一个隐含的EL对象,指的是Map表示请求参数)

也可以看看:


tos*_*hah 11

除了上一篇文章,你可以拥有

<h:form rendered="#{!bean.boolvalue}" />
<h:form rendered="#{bean.textvalue == 'value'}" />
Run Code Online (Sandbox Code Playgroud)

Jsf 2.0