データテーブルに行を追加して更新するコマンド リンクに問題があります。正常に動作していましたが、同じフォームに複数選択のある別のテーブルを追加すると、動作が停止しました。それらの間にいくつかの非互換性がありますか?
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());
}
}
誰が何が起こっているのか知っていますか?