Pessoal bom dia, estou tentando manter o estado de um ManagedBean em duas paginas A e B, quando eu clico no botão voltar da pagina B meu managedbean esta com os objetos null ou seja não esta mantendo o estado.
Alguem pode me ajudar?
Aqui esta o MB
package com.agenda.managedbean;
import java.util.ArrayList;
import java.util.List;
import javax.faces.model.SelectItem;
import javax.inject.Inject;
import javax.inject.Named;
import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.ViewAccessScoped;
import com.agenda.entidade.Curso;
import com.agenda.entidade.Programa;
import com.agenda.entidade.Projeto;
import com.agenda.model.ProgramaModel;
import com.agenda.model.ProjetoModel;
import com.agenda.util.Forward;
import com.agenda.util.MensagemID;
@Named(value = "projetoMB")
@ViewAccessScoped
public class ProjetoMB extends MB {
/**
*
*/
private static final long serialVersionUID = 1L;
@Inject
private ProgramaModel programaModel;
@Inject
private ProjetoModel projetoModel;
private Projeto projeto = new Projeto();
private List<SelectItem> listProgramas;
private Integer programaSelecionado;
//Curso
private Curso curso;
@Override
public String exibir() {
carregarProgramas();
return Forward.CADASTRAR_PROJETO;
}
public String voltar() {
return Forward.CADASTRAR_PROJETO;
}
private void carregarProgramas() {
this.listProgramas = new ArrayList<SelectItem>();
List<Programa> list = programaModel.consultarTodos();
for (Programa programa : list) {
this.listProgramas.add(new SelectItem(programa.getId(), programa
.getNome()));
}
}
public void salvar() {
projetoModel.salvar(projeto);
adicionaMensagemInfo(null, MensagemID.PROGRAMA_CADASTRADO_COM_SUCESSO);
}
public String incluirCurso() {
this.curso = new Curso();
return Forward.INCLUIR_CURSO;
}
public String incluirEvento() {
return Forward.INCLUIR_EVENTO;
}
public String incluirPraticasExtensionistas() {
return Forward.INCLUIR_PRATICAS_EXTENSIONISTAS;
}
public Projeto getProjeto() {
return projeto;
}
public void setProjeto(Projeto projeto) {
this.projeto = projeto;
}
public Integer getProgramaSelecionado() {
return programaSelecionado;
}
public void setProgramaSelecionado(Integer programaSelecionado) {
this.programaSelecionado = programaSelecionado;
}
public List<SelectItem> getListProgramas() {
return listProgramas;
}
public void setListProgramas(List<SelectItem> listProgramas) {
this.listProgramas = listProgramas;
}
public Curso getCurso() {
return curso;
}
public void setCurso(Curso curso) {
this.curso = curso;
}
}
Esse é o comportamento normal de um ViewScoped.
Ele retêm o estado apenas na página.
Aqui você encontra maiores detalhes de como funciona cada escopo: http://uaihebert.com/?p=1596
[quote=Hebert Coelho]Esse é o comportamento normal de um ViewScoped.
Ele retêm o estado apenas na página.
Aqui você encontra maiores detalhes de como funciona cada escopo: http://uaihebert.com/?p=1596[/quote]
Bom dia Hebert, esse comportamento é do ViewScoped mas eu estou usando o ViewAccessScoped, sabe o pq esta assim?
[quote=evertonsilvagomesjava][quote=Hebert Coelho]Esse é o comportamento normal de um ViewScoped.
Ele retêm o estado apenas na página.
Aqui você encontra maiores detalhes de como funciona cada escopo: http://uaihebert.com/?p=1596[/quote]
Bom dia Hebert, esse comportamento é do ViewScoped mas eu estou usando o ViewAccessScoped, sabe o pq esta assim?[/quote]
As páginas A e B usam o mesmo ManagedBean?
[quote=Rodrigo Sasaki][quote=evertonsilvagomesjava][quote=Hebert Coelho]Esse é o comportamento normal de um ViewScoped.
Ele retêm o estado apenas na página.
Aqui você encontra maiores detalhes de como funciona cada escopo: http://uaihebert.com/?p=1596[/quote]
Bom dia Hebert, esse comportamento é do ViewScoped mas eu estou usando o ViewAccessScoped, sabe o pq esta assim?[/quote]
As páginas A e B usam o mesmo ManagedBean?[/quote]
Usam sim Rodrigo, por isso não estou entendendo.
[quote=Hebert Coelho]1) Não sei oq é ViewAccessScoped. Isso é fora da especificação, se não me engano, é coisa to MyFaces.
2) Saiu da tela, perdeu escopo. Faça um teste, crie dois métodos um anotado com @PostConstruct e outro com @PreDestroy e veja o momento em que são chamados.[/quote]
O ViewAccessScoped era pra fazer o que estou tentando fazer, pelo que li ele mantém o estado do ManagedBean entre páginas que usam o mesmo ManagedBean, só que no meu caso não esta acontecendo
[quote=evertonsilvagomesjava][quote=Hebert Coelho]1) Não sei oq é ViewAccessScoped. Isso é fora da especificação, se não me engano, é coisa to MyFaces.
2) Saiu da tela, perdeu escopo. Faça um teste, crie dois métodos um anotado com @PostConstruct e outro com @PreDestroy e veja o momento em que são chamados.[/quote]
O ViewAccessScoped era pra fazer o que estou tentando fazer, pelo que li ele mantém o estado do ManagedBean entre páginas que usam o mesmo ManagedBean, só que no meu caso não esta acontecendo[/quote]Veja c te ajuda:
https://cwiki.apache.org/confluence/display/EXTCDI/JSF+Usage#JSFUsage-ViewAccessScope
[quote=Hebert Coelho][quote=evertonsilvagomesjava][quote=Hebert Coelho]1) Não sei oq é ViewAccessScoped. Isso é fora da especificação, se não me engano, é coisa to MyFaces.
2) Saiu da tela, perdeu escopo. Faça um teste, crie dois métodos um anotado com @PostConstruct e outro com @PreDestroy e veja o momento em que são chamados.[/quote]
O ViewAccessScoped era pra fazer o que estou tentando fazer, pelo que li ele mantém o estado do ManagedBean entre páginas que usam o mesmo ManagedBean, só que no meu caso não esta acontecendo[/quote]Veja c te ajuda:
https://cwiki.apache.org/confluence/display/EXTCDI/JSF+Usage#JSFUsage-ViewAccessScope[/quote]
Isso não esta falando so pra eu implementar o ViewAcessScoped? No bean que eu postei esta assim
[quote=evertonsilvagomesjava][quote=Hebert Coelho][quote=evertonsilvagomesjava][quote=Hebert Coelho]1) Não sei oq é ViewAccessScoped. Isso é fora da especificação, se não me engano, é coisa to MyFaces.
2) Saiu da tela, perdeu escopo. Faça um teste, crie dois métodos um anotado com @PostConstruct e outro com @PreDestroy e veja o momento em que são chamados.[/quote]
O ViewAccessScoped era pra fazer o que estou tentando fazer, pelo que li ele mantém o estado do ManagedBean entre páginas que usam o mesmo ManagedBean, só que no meu caso não esta acontecendo[/quote]Veja c te ajuda:
https://cwiki.apache.org/confluence/display/EXTCDI/JSF+Usage#JSFUsage-ViewAccessScope[/quote]
Isso não esta falando so pra eu implementar o ViewAcessScoped? No bean que eu postei esta assim[/quote]Você leu a teoria sobre a correta utilização? Se encaixa no seu problema?
Sim, eu li, esta falando “A regra é simples, enquanto o MB é referenciada por uma página - o MB estará disponível para a próxima página (se for usado novamente o MB será encaminhado novamente)”
Vc conseguiu visualizar algum problema no meu cenário?