Escopo do Bean em JSF

4 respostas
W

Olá pessoal.

Preciso de um bean com escopo de sessão, porém preciso que um atributo dele seja do escopo request.

O caso que preciso resolver com isso é o seguinte.
Tenho uma tela de pesquisa. A tabela de registros exibe os itens de uma propriedade do managed bean. Caso o usuário selecione um outro item do menu e depois retorne a essa tela de pesquisa, preciso que o sistema não exiba itens nela.
Sei que posso executar uma ação nessa transição, porém o componente (particular) que utilizo, não permite isso. Ele me permite apenas fazer redirecionamentos sem passar por métodos do managed bean de destino.

Como posso resolver isso?

4 Respostas

S

Olá Wellington.

Inicializando o atributo a cada request não resolve?

Att.

W

Não resolve.

Preciso que alguns atributos sejam do tipo request e outros do tipo scope.

Andre_Fonseca

wellington.sampaio:
Não resolve.

Preciso que alguns atributos sejam do tipo request e outros do tipo scope.

Wellington,

Eu to no meu primeiro projeto usando JSF mas aqui a gente fez o seguinte para resolver isso

Declara o escopo do MBean como sessão

<managed-bean> <managed-bean-name>meuMBean</managed-bean-name> <managed-bean-class>br.com.empresa.meuMBean</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean>

Declara os objetos que quer persistir na classe do MBean

Dentro do método do MBean eu seto o atributo na sessão

HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false); session.setAttribute("atributo", "valor");
Assim na próxima página eu tenho o meu vo populado com os valores setados

Só que tem que tomar cuidado ao usar sessão porque a gente tem que limpar ela quando o cara clicar em um botão cancelar por exemplo…

[]´s

maurenginaldo

Uma idéia seria usar um compoente ajax para antes do redirecionamento setar o seu atributo de request.
Veja se as bibliotecas que vc usa permite isso.

Recomendo o uso do Rich Faces http://livedemo.exadel.com/richfaces-demo/richfaces/jsFunction.jsf;jsessionid=2F2CD22D7C138F46B64C440A6049A355?c=jsFunction

Criado 16 de abril de 2008
Ultima resposta 24 de abr. de 2008
Respostas 4
Participantes 4