如何禁用 JSF 页面中同一类型的所有组件
How to disable all components for the same type in a JSF page
我已经说过 4 个页面被这样的 for 动态包含:
<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>
我想执行以下操作:在我生成的每个页面上,数据库中的布尔值只能读取。
显然,我可以通过在每个页面上的每个输入组件中禁用 = 变量来完成此操作。但我想知道是否有一种最优雅的方法来完成这项工作,比如同一页面中的所有 inputText 或所有 inputTextarea,或者是否有办法将页面的所有输入元素放入一个数组中,我可以在其中修改其属性.
您可以为此使用 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? 但这将适用于整个 Web 应用程序,您需要执行条件检查。
我已经说过 4 个页面被这样的 for 动态包含:
<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>
我想执行以下操作:在我生成的每个页面上,数据库中的布尔值只能读取。 显然,我可以通过在每个页面上的每个输入组件中禁用 = 变量来完成此操作。但我想知道是否有一种最优雅的方法来完成这项工作,比如同一页面中的所有 inputText 或所有 inputTextarea,或者是否有办法将页面的所有输入元素放入一个数组中,我可以在其中修改其属性.
您可以为此使用 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? 但这将适用于整个 Web 应用程序,您需要执行条件检查。