有条件地显示JSF组件


79

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

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

在ASP.NET中,我可以轻松地检索元素,然后将属性设置为可显示。我想知道在JSF中是否有简单的方法(麻烦,甚至任何方法)来做到这一点。

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

Answers:


158

是的,使用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运营商gtgelelt代替>>=<=<作为角度括号<>在XML保留字符。另请参见以下相关问答:解析XHTML时出错:元素的内容必须由格式正确的字符数据或标记组成

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

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

然后,您可以显示如下表格:

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

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

也可以看看:


13

除了以前的帖子,您还可以

<h:form rendered="#{!bean.boolvalue}" />
<h:form rendered="#{bean.textvalue == 'value'}" />

的JSF 2.0


1
这么小的增加不值得单独回答。
卡尔·里希特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.