首先,我是Java EE的新手,来自强大的ASP .NET开发背景。 我已经浏览了网络,我可能会错过这个,但似乎没有关于如何将支持bean类连接到JSF组件的简单直接的教程。
一个很好的例子是这样的,目前我正在尝试创建一个JSF页面,其中有一组链接作为菜单栏和一组表单。我打算做的是,当点击一个链接时,将呈现一个特定的表单。
在ASP.NET中,我可以轻松检索元素,然后将属性设置为可显示。我想知道在JSF中是否有简单的方法(哎呀,甚至任何方式)。
表单已经在页面中,只需在单击特定链接时将“render”属性设置为true即可。
答案 0 :(得分:144)
是的,请使用rendered
属性。
<h:form rendered="#{some boolean condition}">
您通常将其绑定到模型而不是让模型抓住组件并对其进行操作。
E.g。
<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'}" />
请注意gt
的重要性,例如ge
,le
,lt
和>
,而不是>=
,<=
,<
和<
作为尖括号>
和<a href="page.xhtml?form=1">link</a>
是XML中的保留字符。另请参阅此相关问答:keyword based EL operators。
关于您的具体用例,我们假设该链接正在传递如下参数:
<h:form rendered="#{param.form eq '1'}">
然后,您可以按以下方式显示表单:
#{param}
(Map
是一个隐式EL对象,引用代表请求参数的{{1}}
答案 1 :(得分:11)
除了上一篇文章,您还可以
<h:form rendered="#{!bean.boolvalue}" />
<h:form rendered="#{bean.textvalue == 'value'}" />
Jsf 2.0
答案 2 :(得分:-1)
同样,我们可以禁用表单中的组件,为此我们将使用“禁用”。
该属性为真/假。如果表达式的计算结果为真,则指定的组件将被禁用,否则将被启用。
例如:我想在某些情况下禁用按钮。
ValueError: time data '0 2020-12-22\n5 2020-02-22 Name: Date, dtype: datetime64[ns]' does not match format '%Y-%m-%d'