80

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

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

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

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

4

3 回答 3

165

是的,使用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,和代替,和作为尖括号并且是 XML 中的保留字符。另请参阅此相关问答:解析 XHTML 时出错:元素的内容必须由格式正确的字符数据或标记组成gelelt>>=<=<<>

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

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

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

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

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

也可以看看:

于 2011-02-02T03:41:58.923 回答
13

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

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

jsf 2.0

于 2012-10-11T21:24:02.077 回答
-1

同样,我们可以禁用表单中的组件,为此我们将使用“禁用”。

此属性采用真/假。如果表达式的计算结果为真,则指定的组件将被禁用,否则将被启用。

例如:我想在某些情况下禁用按钮。

<p:commandButton id="addInformedConsentBtn"
    value="Add Comments" title="Add Comments"
    disabled="#{backingBean.booleanResultOrVariable}">
</p:commandButton>
于 2021-03-24T17:09:00.300 回答