【问题标题】:<p:commandButton> does not invoke method when <p:column selectionMode="multiple"> is added添加 <p:column selectionMode="multiple"> 时,<p:commandButton> 不调用方法
【发布时间】:2012-05-30 18:36:27
【问题描述】:

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

这是我的看法:

<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
    }

}

【问题讨论】:

    标签: jsf-2 primefaces


    【解决方案1】:

    数据表的“选择”属性应该引用域对象的数组。 所以把private List&lt;Categoria&gt; CategoriasPosiblesSelecionadas换成private Categoria[] CategoriasPosiblesSelecionadas

    【讨论】:

      猜你喜欢
      • 2012-01-03
      • 1970-01-01
      • 1970-01-01
      • 2013-09-12
      • 1970-01-01
      • 1970-01-01
      • 2011-05-31
      • 1970-01-01
      • 2010-12-05
      相关资源
      最近更新 更多