1

我在数据表中添加一行并刷新它的 commamd 链接有问题。它工作正常,但是当我在同一个表单上添加另一个具有多项选择的表时,它停止了工作。他们之间是不是有些不兼容?

我正在使用 PrimeFaces 3.4、Mojarra 2.1.6 和 Glassfish 3

这是我的表格:

<h2>Projeto para Credenciamento Equipe de Saúde da Família</h2>
    <hr />
    <h:form id="formCredenciamentoEsf" prependId="false">
        <p:fieldset legend="Caracterização Geral">

            <p:panelGrid id="microareas" columns="2" cellspacing="8">

                <p:dataTable
                    value="#{credenciamentoEsfMB.credenciamentoESF.projeto.caracterizacaoTerritorialDemograficaList}"
                    var="carac" emptyMessage="Adicione uma microárea.">
                    <p:column
                        headerText="Microáreas que compõem a área de abrangência da ESF">
                        <p:inputText value="#{carac.microarea}" size="50" />
                    </p:column>
                    <p:column
                        headerText="População Estimada por Microárea (nº de pessoas)">
                        <p:inputText value="#{carac.populacaoEstimadaMicroarea}"
                            size="50" />
                    </p:column>
                    <p:column>
                        <p:commandLink
                            actionListener="#{credenciamentoEsfMB.removerCaracteristica}"
                            update=":formCredenciamentoEsf:microareas">
                            <f:setPropertyActionListener value="#{carac}"
                                target="#{credenciamentoEsfMB.caracteristicaSelecionada}" />
                            <h:outputText value="Remover " />
                        </p:commandLink>
                    </p:column>
                </p:dataTable>


            </p:panelGrid>

            <h:panelGrid columns="2">                   
                               <p:commandLink actionListener="#{credenciamentoEsfMB.addCaracteristicaTerritorialDemografica}"
                    update=":formCredenciamentoEsf:microareas">
                    <h:outputText value="Adicionar Microárea" />
                </p:commandLink>
                <h:outputLabel/>


                <h:outputLabel
                    value="População total coberta pela ESF (nº de pessoas):"></h:outputLabel>
                <p:inputText id="populacaoCoberta"
                    value="#{credenciamentoEsfMB.credenciamentoESF.populacaoTotalCoberta}" />

                <h:outputLabel
                    value="Caracterização da população a ser coberta pelas ações da ESF:" />

                <p:dataTable
                    value="#{credenciamentoEsfMB.populacaoCobertaDataModel}" var="pop"
                    id="dtCaracteristicaPopulacaoCoberta"
                    selection="#{credenciamentoEsfMB.populacaoCobertaSelecionadas}" >
                    <p:column selectionMode="multiple" />

                    <p:column headerText="População a ser atendida">
                        <h:outputLabel
                            value="#{pop.caracteristicaPopulacaoCoberta.descricao}" />
                    </p:column>
                    <p:column headerText="Nº de pessoas">
                        <p:inputText value="#{pop.numPessoas}" />
                    </p:column>
                </p:dataTable>


            </h:panelGrid>
        </p:fieldset>
    </h:form>
</ui:define>

当我放置最后一个带有多项选择的数据表时,链接“Adicionar Microárea”不起作用。

这是我的托管 bean:

@ManagedBean
@ViewScoped
public class CredenciamentoEsfMB {

    ....

    public PopulacaoCobertaDataModel getPopulacaoCobertaDataModel() {
        List<CaracteristicaPopulacaoCoberta> caracteristicas =  caracteristicaPopulacaoCobertaEjb.buscarTodos();
        populacaoCobertaEsf = new ArrayList<PopulacaoCobertaESFESB>();
        for (CaracteristicaPopulacaoCoberta caracteristicaPopulacaoCoberta : caracteristicas) {
            PopulacaoCobertaESFESB p = new PopulacaoCobertaESFESB();
            p.setCaracteristicaPopulacaoCoberta(caracteristicaPopulacaoCoberta);
            p.setCredenciamentoESFESB(credenciamentoESF);
            populacaoCobertaEsf.add(p);
        }
        this.populacaoCobertaDataModel = new PopulacaoCobertaDataModel(this.populacaoCobertaEsf);
        return this.populacaoCobertaDataModel;
    }


    public void removerCaracteristica() {       
        credenciamentoESF.getProjeto()
                .getCaracterizacaoTerritorialDemograficaList().remove(caracteristicaSelecionada);
    }


    public void addCaracteristicaTerritorialDemografica(ActionEvent e) {
        System.out.println("Adicionando microarea");
        credenciamentoESF.getProjeto()
                .getCaracterizacaoTerritorialDemograficaList()
                .add(new CaracterizacaoTerritorialDemografica());
    }


}

有谁知道发生了什么?

4

0 回答 0