嗨我有一个" fieldset"在我的jsf页面中标记
现在我需要有条件地添加一个"禁用"属性
我有一个解决方案,但它非常难看:
<h:outputText escape="false" value="<fieldset disabled='disabled'>" rendered="#{surveysHandler.surveyRunning}" />
<h:outputText escape="false" value="</fieldset>" rendered="#{surveysHandler.surveyRunning}" />
有一个很酷的jsf 2.2方法吗?
答案 0 :(得分:3)
是的,有一个很酷的新JSF 2.2方法来实现这个目标!
你可以使fieldset
成为一个JSF 2.2 passthrough元素,并传递一个如下属性的地图:
<fieldset jsf:id="fieldset">
<f:passThroughAttributes value="#{customerBean.params}"/>
</fieldset>
前缀jsf
适用于新的JSF 2.2命名空间http://xmlns.jcp.org/jsf
。如果HTML标记在此命名空间中具有任何属性,则JSF会将其转换为组件树中的真实JSF组件。因此,可以使用f:passThroughAttributes
添加来自托管bean中的地图的属性。
params属性的getter看起来像这样(你可以根据bean中的任何条件添加属性):
public Map<String, String> getParams() {
HashMap<String, String> params = new HashMap<String, String>();
if (disabled) {
params.put("disabled", "disabled");
}
return params;
}
有关直通属性和元素的更多信息,请查看我的关于HTML5 friendly markup with JSF 2.2的博文。