Erro ao Tentar persistir usando CDI

1 resposta
jsfjava
Dayson_Rodrigues

estava conseguindo persistir normalmente, quando começei a usar CDi não consegui mais devido este erro.

ADVERTÊNCIA: /cliente/CadastroCliente.xhtml @31,134 value="#{clienteBean.cliente.nome}": Target Unreachable, 'cliente' returned null
javax.el.PropertyNotFoundException: /cliente/CadastroCliente.xhtml @31,134 value="#{clienteBean.cliente.nome}": Target Unreachable, 'cliente' returned null
	at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:100)
	at org.primefaces.util.ComponentUtils.getConverter(ComponentUtils.java:146)
	at org.primefaces.renderkit.InputRenderer.getConvertedValue(InputRenderer.java:175)
	at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1045)
	at javax.faces.component.UIInput.validate(UIInput.java:975)
	at javax.faces.component.UIInput.executeValidate(UIInput.java:1248)
	at javax.faces.component.UIInput.processValidators(UIInput.java:712)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1261)
	at javax.faces.component.UIForm.processValidators(UIForm.java:253)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1261)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1261)
	at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1195)
	at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:658)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:474)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:495)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:767)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1347)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Unknown Source)
Caused by: javax.el.PropertyNotFoundException: Target Unreachable, 'cliente' returned null
	at org.apache.el.parser.AstValue.getTarget(AstValue.java:124)
	at org.apache.el.parser.AstValue.getType(AstValue.java:58)
	at org.apache.el.ValueExpressionImpl.getType(ValueExpressionImpl.java:168)
	at org.jboss.weld.el.WeldValueExpression.getType(WeldValueExpression.java:93)
	at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:98)
	... 37 more

jan 31, 2017 8:11:54 PM com.sun.faces.context.AjaxExceptionHandlerImpl handlePartialResponseError
GRAVE: javax.el.PropertyNotFoundException: /cliente/CadastroCliente.xhtml @31,134 value="#{clienteBean.cliente.nome}": Target Unreachable, 'cliente' returned null
	at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:100)
	at org.primefaces.util.ComponentUtils.getConverter(ComponentUtils.java:146)
	at org.primefaces.renderkit.InputRenderer.getConvertedValue(InputRenderer.java:175)
	at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1045)
	at javax.faces.component.UIInput.validate(UIInput.java:975)
	at javax.faces.component.UIInput.executeValidate(UIInput.java:1248)
	at javax.faces.component.UIInput.processValidators(UIInput.java:712)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1261)
	at javax.faces.component.UIForm.processValidators(UIForm.java:253)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1261)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1261)
	at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1195)
	at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:658)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:474)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:495)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:767)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1347)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Unknown Source)
Caused by: javax.el.PropertyNotFoundException: Target Unreachable, 'cliente' returned null
	at org.apache.el.parser.AstValue.getTarget(AstValue.java:124)
	at org.apache.el.parser.AstValue.getType(AstValue.java:58)
	at org.apache.el.ValueExpressionImpl.getType(ValueExpressionImpl.java:168)
	at org.jboss.weld.el.WeldValueExpression.getType(WeldValueExpression.java:93)
	at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:98)
	... 37 more

Meu Bean

@Named
@ViewScoped
public class ClienteBean implements Serializable {

private static final long serialVersionUID = 1L;

private Cliente cliente;
private Integer idCliente;

@Inject
private ClienteDAO dao;

@Transacional
public void gravar() {
	if (this.cliente.getId() == null) {
		this.dao.adiciona(this.cliente);
	}else {
		this.dao.atualiza(this.cliente);
	}
	this.cliente = new Cliente();
}

OBS: já estão com getters e Setters;

ClienteDAO

@SuppressWarnings(serial)

public class ClienteDAO implements Serializable {
@Inject
private EntityManager manager;

private DAO<Cliente> dao;

@PostConstruct
public void inicializar() {
	this.dao = new DAO<Cliente>(this.manager, Cliente.class);
}

GerenciadorDeTransacao
@Transacional // anotação que criei que se relaciona com gerenciador de transação.
@Interceptor // anotação que executa antes
public class GerenciadorDeTransacao implements Serializable {

@Inject
EntityManager manager;

AroundInvoke // anotação que executa o metodo antes e depois.Ou seja, executa o redor;
public Object executaTx(InvocationContext context) throws Exception {
	System.out.println("Abrindo begin");
	manager.getTransaction().begin();
	Object resultado = context.proceed(); // continua executando
	System.out.println("fechando");
	manager.getTransaction().commit();
	return resultado;
}
Anotacao

@InterceptorBinding // Amarra para poder intender minha anotação;

@Target({ ElementType.METHOD, ElementType.TYPE }) // permite usar em cima do método e Classe.

@Retention(RetentionPolicy.RUNTIME) // É valido na hora de rodar.

public @interface Transacional {
}

beans.xml

<beans>
          <interceptors>
	<class>tx.GerenciadorDeTransacao</class>
</interceptors>
       </beans>

1 Resposta

aix

o client é null, injeta ele, ex:

Altera:

Para:

@Inject
private Cliente cliente;

Na verdade penso que até cabe um daqueles métodos @PostConstruct para inicializar ou até mesmo resetar os valoers das propriedades do obejto.

Criado 31 de janeiro de 2017
Ultima resposta 31 de jan. de 2017
Respostas 1
Participantes 2