Boa tarde,
Preciso guardar os dados de um formulario dentro de uma sessão.
Mas não estou conseguindo pegar estes valores no ManagedBeans e criar a sessão.
Alguem poderia me ajudar?
Obrigado!!!
como vc esta fazendo ??
Giulliano,
Preciso pegar o valor do campo, incluir na sessão, e ainda preencher o campo com esta sessão.
Por enquanto travei aqui:
//xhtml
...
<h:outputLabel value="#{bundle['form.numero']}" for="numero" />
<h:inputText value="" id="numero" />
...
<a4j:commandButton action="#{admMB.enderecoLista}" value="#{bundle['btnEnviar']}" />
...
//managed bean
...
public HttpSession enderecoLista(){
HttpSession session = (HttpSession)
FacesContext.getCurrentInstance().getExternalContext().getSession(false);
session.setAttribute("logradouro", getLogradouro());
return session;
}
...
só que não está certo.
Qual seria a melhor forma de montar esta estrutura?
Entendi…e se vc fizesse assim:
//xhtml
...
<h:outputLabel value="#{bundle['form.numero']}" for="numero" />
<h:inputText value="{managedBean.numero}" id="numero" />
...
<a4j:commandButton action="#{admMB.enderecoLista}" value="#{bundle['btnEnviar']}" />
...
//managed bean
...
pirvate String numero;
//Gets e Sets
public HttpSession enderecoLista(){
FacesContext.getCurrentInstance().getExternalContext().getSession(false).setAttribute("logradouro", this.numero);
return session;
}
...
Uma coisa importante é o botão que vc esta usando…um <a4j:commandButton> e não um <h:commandButton>
A diferença é que o value do componente caso vc usasse um binding estaria no submittedValue e não no Value. Entendeu ???
certo,
e agora depois de setar o valor na session eu preciso exibi-lo em uma tabela na qual ja esta exibindo uma consulta do banco, o objeto de consulta do banco é o mesmo que utilizo na session. É possivel?
Então renato na verdade as coisas funcionam assim no JSF. o ManagedBean sempre tem um escopo ( requisição, sessão, aplicação ) se seu managedBean for de sessão vc não precisa setar valor algum na sessão “manualmente”. Ele estará lá pra vc.
Depois para exibir esse valor em outro lugar basta chamar
<h:outputLabel value="#{bundle['form.numero']}" for="numero" />
<h:outText value="{managedBean.numero}" /> //Exibindo apenas
enquanto a sessão for válida o valor não sera trocado a menos q vc o faça. Entendeu ??
Entendi,
Valeu cara, até mais!