html5标签上的JSF条件属性

时间:2014-04-07 12:18:04

标签: jsf jsf-2.2

嗨我有一个" fieldset"在我的jsf页面中标记

现在我需要有条件地添加一个"禁用"属性

我有一个解决方案,但它非常难看:

<h:outputText escape="false" value="&lt;fieldset disabled='disabled'&gt;" rendered="#{surveysHandler.surveyRunning}" />
<h:outputText escape="false" value="&lt;/fieldset&gt;" rendered="#{surveysHandler.surveyRunning}" />

有一个很酷的jsf 2.2方法吗?

1 个答案:

答案 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的博文。