0

我有<p:dialog>a<p:dataTable>和 a <p:commandButton>。当我添加<p:columm selectionMode="multiple">到表中时,按钮不会调用动作侦听器方法。没有该列,它可以正常工作。这是如何引起的,我该如何解决?

这是我的看法:

<p:dialog id="CategoriasShowPadre" header="#{msgs['Categorias.BusquedaDeCategorias']}" widgetVar="CategoriasShowPadre" modal="true">
    <p:dataTable id="DTBusquedaCategoriasPadre" widgetVar="posiblesTablaP" var="BcatP" value="#{agregarCategorias.categoriasPosibles}"   
        emptyMessage="#{msgs['Categoria.SinRegistros']}" rowKey="#{BcatP.nombre}" selection="#{agregarCategorias.categoriasPosiblesSelecionadas}">
        <p:column selectionMode="multiple" style="width:18px" />     
        <p:column id="nombreCol" filterBy="#{BcatP.nombre}" filterMatchMode="contains">
            <f:facet name="header">  
                <h:outputText value="#{msgs['Categoria.ColunmnaNombre']}" />  
            </f:facet>  
            <h:outputText value="#{BcatP.nombre}" />  
        </p:column>  
        <p:column>  
            <f:facet name="header">  
                <h:outputText value="#{msgs['Categoria.ColunmnaDescripcion']}" />  
            </f:facet>  
            <h:outputText value="#{BcatP.descripcion}" />  
        </p:column>  
    </p:dataTable>    

    <p:commandButton id="AnadiraPadre" value="#{msgs['Categoria.Boton.AgregarCategorias']}" 
        immediate="true" actionListener="#{agregarCategorias.selecionadosElementosPadres()}" 
        onclick="CategoriasShowPadre.hide();" />
</p:dialog>  

这是支持bean:

@ManagedBean
@RequestScoped
public class AgregarCategorias { 

    private List<Categorias> CategoriasPosibles;
    private List<Categorias> CategoriasPosiblesSelecionadas;   

    @PostConstruct
    private void MiPostConstructor() {
        this.CategoriasPosibles = // ...
    }

    public List<Categorias> getCategoriasPosiblesSelecionadas() {
        return CategoriasPosiblesSelecionadas;
    }

    public void setCategoriasPosiblesSelecionadas(List<Categorias> CategoriasPosiblesSelecionadas) {
        this.CategoriasPosiblesSelecionadas = CategoriasPosiblesSelecionadas;
    }

    public List<Categorias> getCategoriasPosibles() {
        return CategoriasPosibles;
    }

    public void setCategoriasPosibles(List<Categorias> CategoriasPosibles) {
        this.CategoriasPosibles = CategoriasPosibles;
    }

    public void selecionadosElementosPadres(ActionEvent evento) {
         // my method code
    }

}
4

1 回答 1

1

数据表的“选择”属性应该引用域对象的数组。所以改变private List<Categoria> CategoriasPosiblesSelecionadasprivate Categoria[] CategoriasPosiblesSelecionadas

于 2012-05-31T12:38:56.730 回答