Olá galera to com um problema muito simples porem ta me deixado bem puto já, pois nada do que tentei funcionou .
Ao adicionar um novo item na tabela no action do <h:commandButton > dentro do <p:dataTable > quando dou um getBar().getFiliais() está vazio mesmo ja tendo um item na lista. no caso o primeiro registro adiciona legal já no segundo a lista ta vazia =(
Ja grato a quem puder ajudar entender o que ta faltando aqui .
vlw
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;
import org.apache.commons.lang.StringUtils;
import org.primefaces.event.RowEditEvent;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
import com.ocpsoft.pretty.faces.annotation.URLAction;
import com.ocpsoft.pretty.faces.annotation.URLBeanName;
import com.ocpsoft.pretty.faces.annotation.URLMapping;
import com.ocpsoft.pretty.faces.annotation.URLMappings;
@Controller(“BarControle”)
@ViewScoped
@URLMappings(mappings = {
@URLMapping(id = “bar”, pattern = “/bar”, viewId = “/faces/pages/cadastros/barCons.xhtml”) ,
@URLMapping(id = “barEditar”, pattern = “/bar/#{id: BarControle.idBar}/editar”, viewId = “/faces/pages/cadastros/barForm.xhtml”) ,
@URLMapping(id = “barNovo”, pattern = “/bar/novo”, viewId = “/faces/pages/cadastros/barForm.xhtml”)
})
@URLBeanName(“BarControle”)
public class BarControle extends SuperControle {
private static final long serialVersionUID = 1L;
private Long idBar;
private String onComplete ;
private BarVO bar;
private List<FilialVO> filiais;
private FilialVO filial;
private FiltroBar filtro = new FiltroBar();
@Autowired
private BarService barService;
private List<SelectItem> listaTipoLogradouros ;
public void adicionarFilial() {
try {
FilialVO filial = new FilialVO();
filial.setEmEdicao(true);
setFilial(filial);
} catch (Exception e) {
setMensagemID("Erro", Uteis.ERRO);
}
}
public void confirmarFilial() {
try {
if (!getBar().getFiliais().contains(getFilial())) {
getBar().getFiliais().add(getFilial());
}
} /*catch (ValidarException e) {
setValidarExceptionMensagemDetalhada(Uteis.internacionalizar("msg_atencao"), e, Uteis.ERRO);
}*/ catch (Exception e) {
setMensagemID("Erro", Uteis.ERRO);
}
}
public BarVO getBar() {
if (bar == null) {
bar = new BarVO();
}
return bar;
}
public void setBar(BarVO bar) {
this.bar = bar;
}
public void setFiltro(FiltroBar filtro) {
this.filtro = filtro;
}
public Long getIdBar() {
return idBar;
}
public void setIdBar(Long idBar) {
this.idBar = idBar;
}
public List<FilialVO> getFiliais() {
if (filiais ==null) {
filiais = new ArrayList<FilialVO>();
}
return filiais;
}
public void setFiliais(List<FilialVO> filiais) {
this.filiais = filiais;
}
public FilialVO getFilial() {
return filial;
}
public void setFilial(FilialVO filial) {
this.filial = filial;
}
}
<ui:define name="content">
<div class="box box-primary ui-grid" style="width: 100%">
<div class="box-header with-border">
<h3 class="box-title"><h:outputText
value="#{msg.prt_bar_titulo}" /> </h3>
</div>
<div class="box-body" >
<p:panelGrid columns="1" columnClasses="ui-grid-col-12" layout="grid" styleClass="ui-panelgrid-blank">
<h:form id="form">
<div class="row">
<div class="form-group ui-grid-col-4">
<h:outputLabel value="#{msg.prt_nome}"/>
<p:inputText value="#{BarControle.bar.nome}" autocomplete="off" size="50" styleClass="form-control"/>
</div>
<div class="form-group ui-grid-col-2">
<h:outputLabel value="CNPJ"/>
<p:inputMask value="#{BarControle.bar.cnpj}" autocomplete="off" size="30" styleClass="form-control" mask="99.999.999/9999-99"/>
</div>
<div class="form-group ui-grid-col-1" >
<h:outputLabel value="Desabilitado" />
<p:selectBooleanCheckbox value="#{BarControle.bar.desabilitado}" style="width: 100%; padding-top:3px;" />
</div>
</div>
<p:dataTable id="filiais" var="fil" value="#{BarControle.bar.filiais}" emptyMessage="#{msg.msg_nenhum_dado_encontrato}" scrollable="true">
<f:facet name="header" >
Filiais
</f:facet>
<p:column width="5%" >
<f:facet name="header">
<h:commandButton image="/imagens/adicionar.png" action="#{BarControle.adicionarFilial}" immediate="true" >
<p:ajax update="form:modalFilial" process="filiais" immediate="true" oncomplete="PF('modalFilial').show();"/>
</h:commandButton>
</f:facet>
<h:commandButton image="/imagens/editar.png" rendered="#{not fil.emEdicao}" action="#{BarControle.editarFilial}" >
<p:ajax process="filiais" oncomplete="" update="filiais" />
</h:commandButton>
<h:commandButton image="/imagens/confirmar.png" rendered="#{fil.emEdicao}" action="#{BarControle.confirmarFilial}" >
<p:ajax process="@this" update="filiais" />
</h:commandButton>
<p:spacer width="10"/>
<h:commandButton image="/imagens/remover.png" action="#{BarControle.removerFilial}" >
<p:ajax process="filiais" oncomplete="" update="filiais" />
</h:commandButton>
</p:column>
<p:column headerText="#{msg.prt_nome}" width="88%" >
<h:outputText value="#{fil.nome}" />
</p:column>
<p:column headerText="#{msg.prt_desabilitado}" width="7%" style="text-align: center;" >
<h:outputLabel value="#{fil.desabilitado ? 'Sim' : 'Não'}" style="text-align: center;" />
</p:column>
</p:dataTable>
<div >
<div class="box" >
<div class="box-body ui-g" >
<div class="input-group">
<h:panelGroup id="mensagens" >
<h:graphicImage url="#{BarControle.iconeMensagem}"/><p:spacer width="10" />
<h:outputText value="#{BarControle.mensagemID}"/>
</h:panelGroup>
<h:dataTable id="listaMensagens" width="100%"
headerClass="consulta" styleClass="mensagem"
columnClasses="colunaEsquerda"
value="#{BarControle.listaMensagemErro}" var="mensagem"
rows="3">
<h:column>
<h:outputText value="#{mensagem}" />
</h:column>
</h:dataTable>
</div>
</div>
</div>
</div>
<div style="text-align: center;">
<div class="">
<h:commandButton class="btn btn-primary" action="#{BarControle.novo}" value="Novo" />
<p:spacer width="10" />
<h:commandButton class="btn btn-primary" action="#{BarControle.gravar}" value="Gravar" >
</h:commandButton>
<p:spacer width="10" rendered="#{not BarControle.bar.novoObj}" />
<h:commandButton class="btn btn-danger" action="#{BarControle.excluir}" value="Excluir" rendered="#{not BarControle.bar.novoObj}" >
<p:ajax update="confirmaDialog" process="form" oncomplete="PF('confirmaDialog').show();"/>
</h:commandButton>
<p:spacer width="10" />
<h:commandButton class="btn btn-default" action="#{BarControle.consultar}" value="Consultar" />
<p:remoteCommand name="confirmaExcluir" update="form, mensagens, listaMensagens" process="form"
actionListener="#{BarControle.excluir}" />
</div>
</div>
<p:dialog header="#{msg.prt_Filial_titulo}" modal="true" responsive="true"
resizable="false" draggable="false" widgetVar="modalFilial"
minHeight="40" id="modalFilial" style="position: fixed">
<p:panelGrid id="linha1" columns="3" styleClass="ui-g ui-panelgrid-blank">
<p:panelGrid columns="1" styleClass="form-group">
<h:outputLabel value="#{msg.prt_nome}" />
<p:inputText value="#{BarControle.filial.nome}" autocomplete="off"
size="50" styleClass="form-control" />
</p:panelGrid>
<p:panelGrid columns="1" styleClass="form-group">
<h:outputLabel value="CNPJ" />
<p:inputMask value="#{BarControle.filial.cnpj}" autocomplete="off"
size="20" styleClass="form-control" mask="99.999.999/9999-99" />
</p:panelGrid>
<p:panelGrid columns="1" styleClass="form-group">
<h:outputLabel value="Desabilitado" />
<p:selectBooleanCheckbox value="#{BarControle.filial.desabilitado}"
style="width: 100%; padding-top:3px;" />
</p:panelGrid>
</p:panelGrid>
<p:panelGrid columns="1" columnClasses="ui-grid-col-12" layout="grid" styleClass="tabForm ui-panelgrid-blank">
<h:panelGroup>
<p:commandButton class="btn btn-primary" update="form, form:modalFilial" process="form, form:modalFilial"
value="Confirmar" action="#{BarControle.confirmarFilial}" >
</p:commandButton>
<p:spacer width="10" />
<h:commandButton class="btn btn-default" value="Cancelar">
<p:ajax
oncomplete="PF('modalFilial').hide();" />
</h:commandButton>
</h:panelGroup>
</p:panelGrid>
</p:dialog>
</h:form>
</p:panelGrid>
</div>
</div>
</ui:define>