<o:massattribute>影响同一<h:panelgrid> </h:panelgrid> </o:massattribute>中的其他组件

时间:2014-08-17 16:01:40

标签: jsf omnifaces

我正在使用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> 会禁用其他输入字段codigocodigoProducto。我认为这不是预期的行为。

1 个答案:

答案 0 :(得分:1)

确实,这是一个错误。 <o:massAttribute>已应用于父UIComponent的所有子级,而不是仅包含在标记中的子级。理论上,当你将每个<o:massAttribute>包裹在自己的UIComponent <h:panelGroup>左右时,它会起作用。但是,如果<h:panelGrid>您希望将每个孩子放在自己的专栏中,这显然不是一种选择。

我重现了您的问题,在issue 51填写了fixed it这个错误和current 2.0 snapshot。如有任何不便,请试一试并抱歉。