Binding em JSF

1 resposta
Gustavo.L

Eu estou treinando somente e queria saber como o binding é usado para manipular componentes através dos backing beans. Se puderem dar o máximo de exemplos possíveis. Por enquanto eu estou tentando settar um valor para um componente do tipo outputText da seguiente forma:

<h:outputText binding="#{usuarioBean.nomeComponente}"/>

e no backing bean estou tentando settar no construtor, desta forma:

private UIOutput nomeComponente;
	
	public UIOutput getNomeComponente() {
		return nomeComponente;
	}

	public void setNomeComponente(UIOutput nomeComponente) {
		this.nomeComponente = nomeComponente;
	}

public UsuarioBean(){		
		this.nomeComponente.setValue("valor qualquer");
	}

tem mais codigo da paginas jsp e no managedbean, nada da erro, somente quando eu coloco a linha para setar o valor no componente que da o erro, quando eu comento a linha o erro não ocorre.
Aparece o seguinte erro quando tento settar:

exception

javax.servlet.ServletException
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
root cause

java.lang.NullPointerException
	com.algaworks.dwjsf.view.UsuarioBean.<init>(UsuarioBean.java:23)
	sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	java.lang.reflect.Constructor.newInstance(Unknown Source)
	java.lang.Class.newInstance(Unknown Source)
	com.sun.faces.config.ManagedBeanFactoryImpl.newInstance(ManagedBeanFactoryImpl.java:275)
	com.sun.faces.application.ApplicationAssociate.createAndMaybeStoreManagedBeans(ApplicationAssociate.java:551)
	com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:82)
	javax.el.CompositeELResolver.getValue(CompositeELResolver.java:54)
	com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:64)
	org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:69)
	org.apache.el.parser.AstValue.getValue(AstValue.java:112)
	org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:182)
	org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:101)
	com.sun.faces.application.ApplicationImpl.createComponent(ApplicationImpl.java:205)
	javax.faces.webapp.UIComponentELTag.createComponent(UIComponentELTag.java:211)
	javax.faces.webapp.UIComponentClassicTagBase.createChild(UIComponentClassicTagBase.java:476)
	javax.faces.webapp.UIComponentClassicTagBase.findComponent(UIComponentClassicTagBase.java:660)
	javax.faces.webapp.UIComponentClassicTagBase.doStartTag(UIComponentClassicTagBase.java:1111)
	com.sun.faces.taglib.html_basic.OutputTextTag.doStartTag(OutputTextTag.java:153)
	org.apache.jsp.ola_jsp._jspx_meth_h_005foutputText_005f3(ola_jsp.java:370)
	org.apache.jsp.ola_jsp._jspx_meth_h_005fform_005f0(ola_jsp.java:192)
	org.apache.jsp.ola_jsp._jspx_meth_f_005fview_005f0(ola_jsp.java:126)
	org.apache.jsp.ola_jsp._jspService(ola_jsp.java:88)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
	com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:428)
	com.sun.faces.application.ViewHandlerImpl.executePageToBuildView(ViewHandlerImpl.java:444)
	com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:116)
	com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
	com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
	com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)

1 Resposta

A

O binding é usado quando precisamos alterar algumas propriedades do componente, quando atribuimos um objeto a propriedade binding, temos que atribuir um objeto do tipo do componente, assim podemos acessar todas as propriedades do componente, por exemplo:

Teste.java

private OutputText componente = new OutputText();

 public void desabilitando(){
  getComponente().disabled(true);
}

Lembrando que essas propriedades você tambem pode acessar como atributos na JSP.

Agora você pode resolver o problema.

Criado 18 de janeiro de 2015
Ultima resposta 18 de jan. de 2015
Respostas 1
Participantes 2