Converter JSF2

4 respostas
gbazilio

Galera,

A situação é a seguinte:

notaFiscal.xhtml

<p:autoComplete value="#{notaFiscalBean.material}" var="material"
	completeMethod="#{notaFiscalBean.completarMaterial}"
	itemLabel="#{material.descricao}" itemValue="#{material}"
	converter="materialConverter"
	selectListener="#{notaFiscalBean.atualizarLista}"
	onSelectUpdate="tbItens growl @this">
</p:autoComplete>

NotaFiscalBean.java

@RequestScoped
public class NotaFiscalBean implements Serializable {

MaterialConverter.java

@FacesConverter(value="materialConverter")
public class MaterialConverter implements Converter {

	@Override
	public Object getAsObject(FacesContext facesContext, UIComponent uiComponent, String string) {
		
		// buscar bean na sessão
//		HttpSession session = (HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(true);
//		NotaFiscalBean notaFiscalBean = (NotaFiscalBean)session.getAttribute("notaFiscalBean");
		
		// buscar bean na requisição
		HttpServletRequest request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
		NotaFiscalBean notaFiscalBean = (NotaFiscalBean)request.getAttribute("notaFiscalBean");
		
		return notaFiscalBean.getMaterialDao().buscar(string);
		
	}

O ponto que quero chegar é no Converter! Qdo procuro pelo bean “notaFiscalBean” através da requisição… Tenho um retorno nulo. Mas, caso eu altere o escopo do NotaFiscalBean para @SessionScoped e busque o bean pela sessão, HttpSession, consigo o retorno esperado, que é o bean em si!

Quero entender porque não consigo buscar o bean, pelo HttpServletRequest, se ele estiver com escopo de @RequestScoped.

Alguém consegueria me explicar?

Obrigado galera!

4 Respostas

leonardobhbr

Amigo troque de Request para ViewScoped
O escopo request dura uma unica requisição sendo ajax ou não resumindo a primeira requisição que sua pagina fizer depois de carregada ele ainda existira depois dessa requisição automaticamente sera criado um novo bean.

Ja o escopo view dura enquanto vc estiver na mesma página independente de quantas requisições foram feitas

depois da uma olhada sobre escopo do JSF para entender melhor

gbazilio

Bom, acabo de testar aqui com @ViewScoped e o problema persiste. Em que momento esse bean é adicionado na requisição? Estou procurando uma resposta, mas ainda não consegui entender o motivo disso estar acontecendo!

luxu

meu problema é exatamente igual o seu…usei os dois escopos(@ViewScope e @RequestScope) e nada… e pelo q pude ver terá q ser o @SessionScope ou algum POG(programação orientada a gambiarra)…vamos v q os amigos falam!!

gbazilio

Estava imaginando se existe alguma diferença entre uma requisição padrão e uma requisição ajax? E, se existe, quais são essas diferenças?? Talvez isso tenha algo relacionado com o problema!

Criado 6 de julho de 2011
Ultima resposta 7 de jul. de 2011
Respostas 4
Participantes 3