如何在JSF页面中禁用相同类型的所有组件

时间:2015-05-27 14:28:51

标签: jsf jsf-2 disabled-control

我已经说过4页由a动态包含的内容:

      <c:forEach items="#{tareaController.mfuncionesAsociadas}" var="mFuncion" varStatus="loop1">                    
             <p:tab id="t_funcion_#{loop1.index}" title="#{mFuncion.nombre}"  >
                   <f:subview id="tab_#{loop1.index}">
                        <p:panelGrid id="pg_funcion_#{loop1.index}">
                           <ui:include src="#{mFuncion.paginaFuncion}"></ui:include>
                        </p:panelGrid>
                   </f:subview>
             </p:tab>
      </c:forEach>

我想要执行以下操作:在我生成的每个页面上,只能通过数据库中的布尔值读取。 显然,我可以通过每个页面上每个输入组件中的disable = variable来完成这项工作。但我想知道是否有一种最优雅的方式来完成这个,让我们说同一页面中的所有inputText或所有inputTextarea,或者是否有办法将页面的所有输入元素都放入一个我可以修改其属性的数组中

1 个答案:

答案 0 :(得分:3)

您可以使用OmniFaces <o:massAttribute>

<o:massAttribute target="javax.faces.component.UIInput" name="disabled" value="#{bean.disabled}">
    <ui:include ... />
</o:massAttribute>

另一种选择是SystemEventListener在此问题中回答:How to disable elements from within a ViewHandler after jsf has embedded the composite component?但这适用于整个网络应用程序,您需要执行条件检查。