<p:column selectionmode =“multiple”>添加时,<p:commandbutton>不会调用方法</p:column> </p:commandbutton>

时间:2012-05-30 18:36:28

标签: jsf-2 primefaces

我有<p:dialog> <p:dataTable><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
    }

}

1 个答案:

答案 0 :(得分:1)

数据表的“selection”属性应该引用域对象的数组。 因此,请更改private List<Categoria> CategoriasPosiblesSelecionadas

private Categoria[] CategoriasPosiblesSelecionadas