我正在使用OmniFaces 1.8.1的新版本,我特别开始使用新标记:<o:massAttribute>
。基本上,我有以下形式有条件渲染和禁用字段:
<h:form id="formABMProducto">
<h:panelGrid id="datosProducto" columns="4">
<o:massAttribute name="rendered" value="#{cc.attrs.page != 'baja'}">
<h:outputLabel for="codigo" ... />
<h:inputText id="codigo" ... />
<rich:message for="codigo" />
<h:panelGroup />
</o:massAttribute>
<o:massAttribute name="rendered" value="#{cc.attrs.page eq 'baja'}">
<h:outputLabel for="codigo" .../>
<rich:autocomplete id="codigoProducto" ... />
<rich:message for="codigo" />
<h:panelGroup />
</o:massAttribute>
<o:massAttribute name="disabled" value="#{cc.attrs.disableComponents}">
<h:outputLabel for="nombre" ... />
<h:inputTextarea id="nombre" ... />
<rich:message for="nombre" />
<span />
<h:outputLabel for="descripcion" ... />
<h:inputTextarea id="descripcion" ... />
<rich:message for="descripcion" />
<span />
</o:massAttribute>
<h:outputLabel value="#{msgs['producto.abm.panel.proveedor.tipo']}" for="CmbTipoProveedor"/>
<rich:select id="CmbTipoProveedor" ... />
<rich:message for="CmbTipoProveedor" />
<a4j:commandButton ... />
</h:panelGrid>
</h:form>
但是,当我打开该页面时,第三个<o:massAttribute>
也会禁用其他输入字段codigo
和codigoProducto
。我认为这不是预期的行为。
答案 0 :(得分:1)
确实,这是一个错误。 <o:massAttribute>
已应用于父UIComponent
的所有子级,而不是仅包含在标记中的子级。理论上,当你将每个<o:massAttribute>
包裹在自己的UIComponent
<h:panelGroup>
左右时,它会起作用。但是,如果<h:panelGrid>
您希望将每个孩子放在自己的专栏中,这显然不是一种选择。
我重现了您的问题,在issue 51填写了fixed it这个错误和current 2.0 snapshot。如有任何不便,请试一试并抱歉。