嗨,我的jsf页面中有一个“fieldset”标签
我有一个解决方案,但它非常难看:
- <h:outputText escape="false" value="<fieldset disabled='disabled'>" rendered="#{surveysHandler.surveyRunning}" />
- <h:outputText escape="false" value="</fieldset>" rendered="#{surveysHandler.surveyRunning}" />
有一个很酷的jsf 2.2方法吗?
解决方法
是的,有一个很酷的新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:passThroughAttributesto添加来自托管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.