[RESOLVIDO] Managed Bean não atualiza na tela depois de envio com ajax (JSF/Primefaces)

0 respostas
javer

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:
@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
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:
<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>

[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]

Criado 14 de maio de 2014
Respostas 0
Participantes 1