Bean Não está setando

Estou criando um formulario atravez de um metodo bean JSF, porém ao executar a ação o servidor indica que o campo está nulo

Segue metodo Bean e metodo dao:

Bean:

   package br.com.robson.sigor2.bean;

import java.sql.SQLException;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import br.com.robson.sigor2.domain.DomainObras;
import br.com.robson.sigor2.util.JSFUtil;
import br.com.robson.sigor2.dao.DaoObra;

@ManagedBean(name = "MBDadosObra")
@SessionScoped
public class BeanObras {
	
	private DomainObras obraBean = new DomainObras();

	public DomainObras getObraBean() {
		return obraBean;
	}

	public void setObraBean(DomainObras obraBean) {
		this.obraBean = obraBean;
	}

	public void novo() {

		try {
			DaoObra dao = new DaoObra();
			
			
			dao.salvar(obraBean);
			
			JSFUtil.adicionarMenssagemSucesso("Obra Salva com Sucesso !!");
		} catch (SQLException e) {
			JSFUtil.adicionarMenssagemErro("ex.getMessage()");
			e.printStackTrace();
		}

	}
	
	

}

Dao:

package br.com.robson.sigor2.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import br.com.robson.sigor2.domain.DomainObras;
import br.com.robson.sigor2.factory.ConexaoFactory;

public class DaoObra {
	
	public void salvar(DomainObras obraDao) throws SQLException {
		
		
		StringBuilder sql = new StringBuilder();
		sql.append("INSERT INTO cad_dados_obras ");
		sql.append("(municipio, ta, gerencia, data_ass_ta, vigencia_ta, gerente, recurso, codigo_contabil, engenheiro, programa, localidade, tecnico, status, regional, rt)");
		
		sql.append(" VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
		
		Connection con = ConexaoFactory.conectar();       																						

		PreparedStatement comando = con.prepareStatement(sql.toString());
		
		/*Dados da Obra - Insere os dados do Cadastro no Banco de Dados*/
		
		comando.setString(1, obraDao.getMunicipio());
		comando.setString(2, obraDao.getTermo_aditivo());
		comando.setString(3, obraDao.getGerencia());
		
		comando.setString(4, obraDao.getData_de_ass_ta());
		comando.setString(5, obraDao.getVigencia_do_ta());
		comando.setString(6, obraDao.getGerente());
		
		comando.setInt(7, obraDao.getRecurso());
		comando.setString(8, obraDao.getCod_contabil());
		comando.setString(9, obraDao.getEngenheiro());
		
		comando.setString(10, obraDao.getPrograma());
		comando.setString(11, obraDao.getLocalidade());
		comando.setString(12, obraDao.getTecnico());
		
		comando.setString(13, obraDao.getRegional());
		comando.setString(14, obraDao.getRt());
		comando.setString(15, obraDao.getData());
		
		comando.executeUpdate();	
				
	
	}
}

Segue codigo XHTML

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:p="http://primefaces.org/ui"
	template="/template/ModeloSistema.xhtml"
	xmlns:f="http://java.sun.com/jsf/core">

	<ui:define name="menu">
		<ui:include src="/include/menu.xhtml"></ui:include>
	</ui:define>

	<ui:define name="conteudo">
		<h:form id="recebe_obra" >
		 <p:growl id="growl" sticky="true" showDetail="true"  />

			
<!-- Painel Dados Município -->
				
					<p:panel header="Dados da Obra">
						<p:messages />

						<h:panelGrid  id="cadObra" columns="6" 
							columnClasses="label, value">
						
							<h:outputLabel value="Município: " />
							<h:inputText value="#{MBDadosObra.obraBean.municipio}"
								required="true" label="Município:" />
								
							<h:outputLabel value="Termo Aditivo (TA): " />
							<h:inputText value="#{MBDadosObra.obraBean.termo_aditivo}"
								required="true" label="Termo Aditivo (TA)" />
								
							<h:outputLabel value="Gerência: " />
							<h:inputText value="#{MBDadosObra.obraBean.gerencia}" required="true"
								label="Programa" />
															
							<h:outputLabel value="Data de Assinatura do TA: " />
							<h:inputText value="#{MBDadosObra.obraBean.data_de_ass_ta}"
								required="true" label="Vigencia do TA" />
																					
							<h:outputLabel value="Vigência TA: " />
							<h:inputText value="#{MBDadosObra.obraBean.vigencia_do_ta}"
								required="true" label="Data TA" />
								
							<h:outputLabel value="Gerente: " />
							<h:inputText value="#{MBDadosObra.obraBean.gerente}"
								required="true" label="Gerente:" />															
							
							<h:outputLabel value="Recurso: " />
							<h:inputText value="#{MBDadosObra.obraBean.recurso}" required="true"
								label="Recurso" />
								
							<h:outputLabel value="Codigo Contabil: " />
							<h:inputText value="#{MBDadosObra.obraBean.cod_contabil}"
								required="true" label="Codigo Contabil" />
																							
							<h:outputLabel value="Engenheiro Responsável: " />
							<h:inputText value="#{MBDadosObra.obraBean.engenheiro}" required="true"
								label="Engenheiro Responsável:" />							

							<h:outputLabel value="Programa: " />
							<h:inputText value="#{MBDadosObra.obraBean.programa}" required="true"
								label="Programa" />															
																														
							<h:outputLabel value="Localidade: " />
							<h:inputText value="#{MBDadosObra.obraBean.localidade}"
								required="true" label="Localidade" />
								
							<h:outputLabel value="Técnico Responsável: " />
							<h:inputText value="#{MBDadosObra.obraBean.tecnico}" required="true"
								label="Técnico Responsável:" />
								
							<h:outputLabel value="Status da Obra: " />
							<h:inputText value="#{MBDadosObra.obraBean.status}" required="true"
								label="Status da Obra:" />
							
							<h:outputLabel value="Regional Pertencente: " />
							<h:inputText value="#{MBDadosObra.obraBean.regional}" required="true"
								label="Regional Pertencente:" />
								
							<h:outputLabel value="Nº RT: " />
							<h:inputText value="#{MBDadosObra.obraBean.rt}" required="true"
								label="Nº RT:" />
								
							<p:commandButton value="Salvar Obra" action="#{MBDadosObra.novo}" 
							update="growl" process="@this" />			
						</h:panelGrid>
					</p:panel>
			
               
                
</h:form>
				



	</ui:define>
</ui:composition>

Erro

set 12, 2020 3:06:20 PM org.apache.catalina.core.AprLifecycleListener init
INFORMAÇÕES: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre1.8.0_261\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:/Program Files/Java/jre1.8.0_261/bin/server;C:/Program Files/Java/jre1.8.0_261/bin;C:/Program Files/Java/jre1.8.0_261/lib/amd64;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\Java\jdk1.8.0_261;C:\Users\robso\OneDrive\Área de Trabalho;;.
set 12, 2020 3:06:20 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
ADVERTÊNCIA: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:SIGOR2' did not find a matching property.
set 12, 2020 3:06:20 PM org.apache.coyote.AbstractProtocol init
INFORMAÇÕES: Initializing ProtocolHandler ["http-bio-8080"]
set 12, 2020 3:06:21 PM org.apache.coyote.AbstractProtocol init
INFORMAÇÕES: Initializing ProtocolHandler ["ajp-bio-8009"]
set 12, 2020 3:06:21 PM org.apache.catalina.startup.Catalina load
INFORMAÇÕES: Initialization processed in 838 ms
set 12, 2020 3:06:21 PM org.apache.catalina.core.StandardService startInternal
INFORMAÇÕES: Starting service Catalina
set 12, 2020 3:06:21 PM org.apache.catalina.core.StandardEngine startInternal
INFORMAÇÕES: Starting Servlet Engine: Apache Tomcat/7.0.47
set 12, 2020 3:06:21 PM org.apache.catalina.util.SessionIdGenerator createSecureRandom
INFORMAÇÕES: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [171] milliseconds.
set 12, 2020 3:06:23 PM com.sun.faces.config.ConfigureListener contextInitialized
INFORMAÇÕES: Inicializando Mojarra 2.2.9 (-SNAPSHOT 20141218-0939 https://svn.java.net/svn/mojarra~svn/tags/2.2.9@14083) para o contexto '/SIGOR2'
set 12, 2020 3:06:23 PM com.sun.faces.spi.InjectionProviderFactory createInstance
INFORMAÇÕES: JSF1048: Anotações PostConstruct/PreDestroy presentes.  Os métodos ManagedBeans marcados com essas anotações informarão as anotações processadas.
set 12, 2020 3:06:24 PM org.primefaces.webapp.PostConstructApplicationEventListener processEvent
INFORMAÇÕES: Running on PrimeFaces 4.0
set 12, 2020 3:06:24 PM org.apache.coyote.AbstractProtocol start
INFORMAÇÕES: Starting ProtocolHandler ["http-bio-8080"]
set 12, 2020 3:06:24 PM org.apache.coyote.AbstractProtocol start
INFORMAÇÕES: Starting ProtocolHandler ["ajp-bio-8009"]
set 12, 2020 3:06:24 PM org.apache.catalina.startup.Catalina start
INFORMAÇÕES: Server startup in 3962 ms
Sat Sep 12 15:07:01 BRT 2020 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'municipio' cannot be null
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.lang.reflect.Constructor.newInstance(Unknown Source)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
	at com.mysql.jdbc.Util.getInstance(Util.java:387)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:934)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3966)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3902)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2526)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2673)
	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2549)
	at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1861)
	at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2073)
	at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2009)
	at com.mysql.jdbc.PreparedStatement.executeLargeUpdate(PreparedStatement.java:5098)
	at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1994)
	at br.com.robson.sigor2.dao.DaoObra.salvar(DaoObra.java:46)
	at br.com.robson.sigor2.bean.BeanObras.novo(BeanObras.java:32)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.apache.el.parser.AstValue.invoke(AstValue.java:278)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:274)
	at com.sun.faces.facelets.el.TagMethodExpression.invoke(Unknown Source)
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(Unknown Source)
	at com.sun.faces.application.ActionListenerImpl.processAction(Unknown Source)
	at javax.faces.component.UICommand.broadcast(Unknown Source)
	at javax.faces.component.UIViewRoot.broadcastEvents(Unknown Source)
	at javax.faces.component.UIViewRoot.processApplication(Unknown Source)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(Unknown Source)
	at com.sun.faces.lifecycle.Phase.doPhase(Unknown Source)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(Unknown Source)
	at javax.faces.webapp.FacesServlet.service(Unknown Source)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)

Segue classe domainObras:

package br.com.robson.sigor2.domain;

public class DomainObras {
	
	private int cod_obra;
	private String municipio;
	private String termo_aditivo;
	private String data_de_ass_ta;
	private String vigencia_do_ta;
	private String cod_contabil;
	private String localidade;	
	private int recurso;
	private String programa;
	private String gerencia;
	private String gerente;
	private String engenheiro;
	private String tecnico;
	private String status;
	private String rt;
	private String regional;
	private String diagnostico;
	private double metro_ligacao;
	private String data;
	
	public int getCod_obra() {
		return cod_obra;
	}
	public void setCod_obra(int cod_obra) {
		this.cod_obra = cod_obra;
	}
	public String getMunicipio() {
		return municipio;
	}
	public void setMunicipio(String municipio) {
		this.municipio = municipio;
	}
	public String getTermo_aditivo() {
		return termo_aditivo;
	}
	public void setTermo_aditivo(String termo_aditivo) {
		this.termo_aditivo = termo_aditivo;
	}
	public String getData_de_ass_ta() {
		return data_de_ass_ta;
	}
	public void setData_de_ass_ta(String data_de_ass_ta) {
		this.data_de_ass_ta = data_de_ass_ta;
	}
	public String getVigencia_do_ta() {
		return vigencia_do_ta;
	}
	public void setVigencia_do_ta(String vigencia_do_ta) {
		this.vigencia_do_ta = vigencia_do_ta;
	}
	public String getCod_contabil() {
		return cod_contabil;
	}
	public void setCod_contabil(String cod_contabil) {
		this.cod_contabil = cod_contabil;
	}
	public String getLocalidade() {
		return localidade;
	}
	public void setLocalidade(String localidade) {
		this.localidade = localidade;
	}
	public int getRecurso() {
		return recurso;
	}
	public void setRecurso(int recurso) {
		this.recurso = recurso;
	}
	public String getPrograma() {
		return programa;
	}
	public void setPrograma(String programa) {
		this.programa = programa;
	}
	public String getGerencia() {
		return gerencia;
	}
	public void setGerencia(String gerencia) {
		this.gerencia = gerencia;
	}
	public String getGerente() {
		return gerente;
	}
	public void setGerente(String gerente) {
		this.gerente = gerente;
	}
	public String getEngenheiro() {
		return engenheiro;
	}
	public void setEngenheiro(String engenheiro) {
		this.engenheiro = engenheiro;
	}
	public String getTecnico() {
		return tecnico;
	}
	public void setTecnico(String tecnico) {
		this.tecnico = tecnico;
	}
	public String getStatus() {
		return status;
	}
	public void setStatus(String status) {
		this.status = status;
	}
	public String getRt() {
		return rt;
	}
	public void setRt(String rt) {
		this.rt = rt;
	}
	public String getRegional() {
		return regional;
	}
	public void setRegional(String regional) {
		this.regional = regional;
	}
	public String getDiagnostico() {
		return diagnostico;
	}
	public void setDiagnostico(String diagnostico) {
		this.diagnostico = diagnostico;
	}
	public double getMetro_ligacao() {
		return metro_ligacao;
	}
	public void setMetro_ligacao(double metro_ligacao) {
		this.metro_ligacao = metro_ligacao;
	}
	public String getData() {
		return data;
	}
	public void setData(String data) {
		this.data = data;
	}
	
	

}

Pessoal, mais uma observação pra quem está acompanhando este problema:

dentro da classe DaoObra eu coloque esse método abaixo :

 public static void main(String[] args) {
        		
        		
        		
        		DaoObra daoObra = new DaoObra();
        		try {
        			
        			DomainObras obra = new DomainObras();
        			
        			obra.setMunicipio("");
        			obra.setTermo_aditivo("6º");
        			obra.setGerencia("GPOSO");
        			obra.setData_de_ass_ta("13/09/2020");
        			obra.setVigencia_do_ta("13/09/2022");
        			obra.setGerente("Mario");
        			obra.setRecurso(417);
        			obra.setCod_contabil("B45");
        			obra.setEngenheiro("Aroldo");
        			obra.setPrograma("San Rural");
        			obra.setLocalidade("Linha Damasceno");
        			obra.setTecnico("Robson");
        			obra.setRegional("GRPB");
        			obra.setRt("20/2020");
        			obra.setData("13/09/2020");
        			
        			daoObra.salvar(obra);
        			System.out.println("Salvo com sucesso !!");
        			
        		} catch (SQLException e) {
        			System.out.println("Erro ao Salvar");
        			e.printStackTrace();
        		}
        	} 

Quando esse método é executado pelo tom cat ele grava normalmento no banco de dados, ele só gera o erro quando eu tento gravar por meio do formulario xhtml, ou seja, o erro não pode ser no método salvar.

Posta a classe DomainObras também

1 curtida

Segundo o erro de console , foi encontrado erros no método novo e salvar, tenta checar se esses métodos está funcionando, através de teste com o Junit .

Pra deixar registrado, consegui resolver meu problema, eu estva usando o <p: comandButton> troquei para o <h:commandButton> e funcionou, não me pergunte porque. kkkkkkkk. Obrigado a todos que se esforçaram para me ajudar. abraços.

@Robsonnn

O <h:commandButton> é o componente Button do JSF.
O <p:commandButton> é o componente Button do PrimeFaces.

Faz sentido. Você estava setando todos os valores usando JSF, mas na hora de fazer a ação estava chamando o PrimeFaces. E o PrimeFaces não conhecia nenhum dos valores que vc setou, pois eles foram setados usando o componente do JSF (h:inputText). Você pode fazer um teste e trocar os inputTexts para p:inputText e ver se funciona tbm :slight_smile:

2 curtidas