Erro ao chamar o método - property 'gerador' not found on type br.com.GeradorSerialProject.GeradorBean

1 resposta Resolvido
jsfprogramaçãoprimefacesjavafront-end
B

Pessoal, por que toda vez que clico no botão “gerar” no .xhtml da esse erro?

Erro: DVERTÊNCIA: Definindo valor de atributo não serializável em ViewMap (chave: geradorBean, classe do valor: br.com.GeradorSerialProject.GeradorBean).

nov 01, 2016 3:41:07 PM com.sun.faces.application.view.FaceletViewHandlingStrategy handleRenderException

GRAVE: Error Rendering View[/pages/gerador.xhtml]

javax.el.PropertyNotFoundException: /pages/gerador.xhtml @19,91 value="#{geradorBean.gerador.dataVencimento}": Property gerador not found on type br.com.GeradorSerialProject.GeradorBean

at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:111)

at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)

at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)

at javax.faces.component.UIOutput.getValue(UIOutput.java:174)

at javax.faces.component.UIInput.getValue(UIInput.java:291)

at org.primefaces.util.ComponentUtils.getValueToRender(ComponentUtils.java:81)

at org.primefaces.component.inputtext.InputTextRenderer.encodeMarkup(InputTextRenderer.java:71)

at org.primefaces.component.inputtext.InputTextRenderer.encodeEnd(InputTextRenderer.java:52)

at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:920)

at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:312)

at com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185)

javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:890)

at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856)

com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:458)

at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:134)

at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)

at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)

at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)

at javax.faces.webapp.FacesServlet.service(FacesServlet.java:659)

org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:802)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1410)

at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Thread.java:745)

Caused by: javax.el.PropertyNotFoundException: Property gerador not found on type br.com.GeradorSerialProject.GeradorBean

at javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:259)

at javax.el.BeanELResolver$BeanProperties.access$300(BeanELResolver.java:212)

at javax.el.BeanELResolver.property(BeanELResolver.java:346)

at javax.el.BeanELResolver.getValue(BeanELResolver.java:92)

at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)

at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)

at org.apache.el.parser.AstValue.getValue(AstValue.java:169)

at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184)

at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)

 46 more

@ManagedBean
@ViewScoped
public class GeradorBean {
private Gerador gerador;
        public void gerarSerial() {
                gerador = new Gerador();
		String data = gerador.getDataVencimento();
		int calculo = (Integer.parseInt(data)+132)/4;	
		gerador.setCodigoSerial(calculo);
	}

gerador.xhtml

<h:form>
	<center>
		<h:panelGrid columns="2">
			<p:outputLabel value="Data do Vencimento:" />
			<p:inputText maxlength="50" size="30" value="#{geradorBean.gerador.dataVencimento}" />

			<p:outputLabel value="Código Gerado:" />
			<p:inputText maxlength="2" size="10" value="#{geradorBean.gerador.codigoSerial}"/>
		</h:panelGrid>

		<h:panelGrid columns="2">
			<p:commandButton value="Gerar"
				actionListener="#{geradorBean.gerarSerial()}" update=":mensagem" />
			<p:commandButton value="Cancelar" />
		</h:panelGrid>
	</center>
</h:form>

Domain

public class Gerador {
	private String dataVencimento;
        private int codigoSerial;
    	public void setCodigoSerial(int codigoSerial) {
    		this.codigoSerial = codigoSerial;
    	}	
    	public String getDataVencimento() {
    		return dataVencimento;
    	}
    	public void setDataVencimento(String dataVencimento) {
    		this.dataVencimento = dataVencimento;
    	}
    	public int getCodigoSerial() {
    		return codigoSerial;
    	}

1 Resposta

B
Solucao aceita

Resolvido com este código, não estava instanciando o objeto no momento certo.

@PostConstruct
public void novo(){
	gerador = new Gerador();
}
Criado 1 de novembro de 2016
Ultima resposta 1 de nov. de 2016
Respostas 1
Participantes 1