Pessoal, tenho problema que é o seguinte:
- tenho um form que é para preencher um endereço, no Bean tem uma lista onde vai ser adicionado esse endereço, após adicionar tele tem que atualizar na tela uma dataTable.
- ao dubugar o método chamado pelo botão do envio é constatado que foi adicionado o endereço à lista com sucesso, porém não atualiza a lista na tela, e também se eu tentar adicionar novamente a lista está vazia, ou seja, o anterior que adicionei não está lá.
Seguem partes dos códigos:
[code]@Named
@SessionScoped
public class RemetenteMB implements Serializable {
…
@Inject
private Remetente remetente;
…
public void adicionarEndereco() {
Endereco novoEndereco = (Endereco) endereco.clone();
novoEndereco.setEstado(estadoSelecionado.getUf());
getRemetente().getEnderecos().add(novoEndereco); // adicionado com sucesso
[/code]
No JSF, esse botão está no formEndereco que ao ser enviado deve adicionar na lista lá no bean e em seguida atualizar o dataTable com a lista na tela:
<p:commandButton value="#{msg['label.adicionar']}" update=":formRemetente,formEndereco"
id="btnAdicionarEndereco" ajax="true" actionListener="#{remetenteMB.adicionarEndereco}"
icon="ui-icon-plus" styleClass="ui-priority-primary" />
Dentro do formRemetente tem a lista dos dados:
[code]<p:dataTable id=“dataTableEnderecos” var=“endereco” value="#{remetenteMB.remetente.enderecos}“
styleClass=“tabela-listagem” editable=“true”>
<p:column sortBy=”#{endereco.logradouro}">
<f:facet name=“header”>
<h:outputText value="#{msg[‘label.endereco.logradouro’]}" />
</f:facet>
<h:outputText value="#{endereco.logradouro}, #{endereco.numero}" />
</p:column>
<p:column sortBy="#{endereco.complemento}">
<f:facet name="header">
<h:outputText value="#{msg['label.endereco.complemento']}" />
</f:facet>
<h:outputText value="#{endereco.complemento}" />
</p:column>
<p:column sortBy="#{endereco.bairro}">
<f:facet name="header">
<h:outputText value="#{msg['label.endereco.bairro']}" />
</f:facet>
<h:outputText value="#{endereco.bairro}" />
</p:column>
<p:column sortBy="#{endereco.cidade}">
<f:facet name="header">
<h:outputText value="#{msg['label.endereco.cidade']}" />
</f:facet>
<h:outputText value="#{endereco.cidade}" />
</p:column>
<p:column sortBy="#{endereco.estado}">
<f:facet name="header">
<h:outputText value="#{msg['label.endereco.estado']}" />
</f:facet>
<h:outputText value="#{endereco.estado}" />
</p:column>
<p:column style="width:6%">
<p:commandButton actionListener="#{remetenteMB.deleteLinhaEndereco(endereco)}"
immediate="true" process="dataTableEnderecos" update="dataTableEnderecos"
icon="ui-icon-trash"
onclick="if (!confirm('Confirma remover esse endereço?\n#{endereco.logradouro}, #{endereco.numero}')) return false;" />
</p:column>
</p:dataTable>[/code]
[color=green]======================== S O L U Ç Ã O ================[/color]
Era o import que estava sendo feito de pacote errado, o correto é:
[size=18]import javax.enterprise.context.SessionScoped;[/size]