2014-04-07 121 views
5

嗨条件属性我在我的JSF页面的“字段集”标签JSF HTML5的标签

现在我需要条件增加一个“已禁用”属性

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

<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方法?

回答

3

是的,有一个很酷的新的JSF 2.2方法来实现这一点!

可以使fieldset一个JSF 2.2直通元素,并将其传递图的属性是这样的:

<fieldset jsf:id="fieldset"> 
    <f:passThroughAttributes value="#{customerBean.params}"/> 
</fieldset> 

的前缀​​是新的JSF 2.2的命名空间http://xmlns.jcp.org/jsf。如果一个HTML标签在这个名称空间中有任何属性,JSF会将它转换为组件树中真实的JSF组件。因此可以使用f:passThroughAttributes在托管bean中添加来自映射的属性。

为params属性吸气看起来是这样的(你可以基于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