JSF + Primefaces + bd + mensagens de erro

2 respostas
newuser

Olá amigos depois de tanto sofrer, consegui inserir dados no meu bd com jsf e primefaces.
Só que o que me assustou foi a quantidade de mensagens no console.

Meu formulário inserir:
<?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">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
	  xmlns:h="http://java.sun.com/jsf/html"
	  xmlns:f="http://java.sun.com/jsf/core"
	  xmlns:p="http://primefaces.prime.com.tr/ui">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Cadastro de Paises</title>
<style> 
.ui-widget, 
.ui-widget .ui-widget { 
font-size: 12px !important; 
} 
</style> 
</h:head>
<h:body>
<ui:include src="menu.xhtml"/>
<br/>
<h:form>
<p:panel header="Cadastro de paises">
  <p:fieldset legend="Dados do País">
    <h:panelGrid columns="2" width="900">
      <h:column>
        <h:outputLabel value="Nome"/>
      </h:column>
      <h:column>
        <h:inputText id="descricao" size="40" value="#{paisBean.descricao}"/>
      </h:column>
      <h:column>
        <h:outputLabel value="Sigla"/>
      </h:column>
      <h:column>
        <h:inputText id="sigla" size="10" value="#{paisBean.sigla}"/>
      </h:column>
      <h:column>
        <h:outputLabel value="C&oacute;digo"/>
      </h:column>
      <h:column>
        <h:inputText id="codigo" size="10" value="#{paisBean.codigo}"/>
      </h:column>
    </h:panelGrid>
  </p:fieldset>
</p:panel>
<p:separator/>
<h:commandButton value="Confirma" id="btsalvar" action="#{paisBean.inserir}"></h:commandButton>
</h:form>
 <h:panelGrid columns="2">
   <h:outputLabel value="Descrição: " />
   <h:outputLabel value="#{paisBean.pais.descricao}" />
   <h:outputLabel value="Sigla: " />
   <h:outputLabel value="#{paisBean.pais.sigla}" />
   <h:outputLabel value="Código: " />
   <h:outputLabel value="#{paisBean.pais.codigo}" />
 </h:panelGrid>
</h:body>
</html>
Meu managedBean paisBean:
package classe.controle.Beans;

import java.sql.SQLException;

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

import classe.modelo.dao.PaisDao;
import classe.modelo.vo.Pais;

@ManagedBean(name = "paisBean")
@SessionScoped
public class PaisBean {
	private String descricao;
	private String sigla;
	private String codigo;

	Pais pais = new Pais();

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public String getSigla() {
		return sigla;
	}

	public void setSigla(String sigla) {
		this.sigla = sigla;
	}

	public String getCodigo() {
		return codigo;
	}

	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}

	public Pais getPais() {
		return pais;
	}

	public void setPais(Pais pais) {
		this.pais = pais;
	}

	public PaisBean() {
		inserir();
	}

	public String inserir() {
        pais.setDescricao(descricao);
        pais.setSigla(sigla);
        pais.setCodigo(codigo);
        PaisDao paisDao = new PaisDao();
  	    Boolean inserir;
		try {
			inserir = paisDao.inserir(pais);
			if(inserir != false){
	  	       System.out.println("OK.Graças à Deus e Nossa Senhora!!!");
	  	    }
		} catch (SQLException e) {
			e.printStackTrace();
		}
  	    
		return null;
	}

}
Meu PaisDao:
package classe.modelo.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import classe.conexao.Conexao;
import classe.modelo.vo.Pais;

public class PaisDao {
	static Connection conexao;
	
	public PaisDao(){
    	conexao = Conexao.conectar();
    }
	
    public boolean inserir(Pais pais) throws SQLException{
    	try {
    		StringBuffer sql1 = new StringBuffer();
    		sql1.append("INSERT INTO pais (pais_descricao,pais_sigla_onu,pais_codigo_onu) "
                + "VALUES (?, ?, ?)");
    		PreparedStatement consulta1 = conexao.prepareStatement(sql1.toString());
    		consulta1.setString(1, pais.getDescricao());
    		consulta1.setString(2, pais.getSigla());
    		consulta1.setString(3, pais.getCodigo());
    		consulta1.execute();
    		
    		return true;
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
    }
}
E as mensagens de erro no console após inserir:

04/04/2012 22:10:18 org.apache.catalina.core.AprLifecycleListener init
INFO: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files (x86)\Java\jre6\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files (x86)/Java/jre6/bin/client;C:/Program Files (x86)/Java/jre6/bin;C:/Program Files (x86)/Java/jre6/lib/i386;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Internet Explorer;C:\Program Files (x86)\Java\jdk1.6.0_25\bin;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;D:\eclipse;;.
04/04/2012 22:10:18 org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
04/04/2012 22:10:18 org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 289 ms
04/04/2012 22:10:18 org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
04/04/2012 22:10:18 org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.14
04/04/2012 22:10:19 com.sun.faces.config.ConfigureListener contextInitialized
INFO: Inicializando Mojarra 2.1.0 (FCS FCS) para o contexto '/SystemSignageDoor'
04/04/2012 22:10:19 com.sun.faces.mgbean.BeanManager addBean
AVISO: JSF1074: O bean gerenciado denominado 'empresaBean' já foi registrado. Substituindo o tipo de classe do bean gerenciado classe.controle.Beans.EmpresaBean por classe.controle.Beans.EmpresaBean.
04/04/2012 22:10:19 com.sun.faces.mgbean.BeanManager addBean
AVISO: JSF1074: O bean gerenciado denominado 'paisBean' já foi registrado. Substituindo o tipo de classe do bean gerenciado classe.controle.Beans.PaisBean por classe.controle.Beans.PaisBean.
04/04/2012 22:10:20 org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
04/04/2012 22:10:20 org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
04/04/2012 22:10:20 org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/19 config=null
04/04/2012 22:10:20 org.apache.catalina.startup.Catalina start
INFO: Server startup in 1554 ms
org.postgresql.util.PSQLException: ERRO: valor nulo na coluna "pais_descricao" viola a restrição não-nula
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2102)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1835)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:500)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:388)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:381)
at classe.modelo.dao.PaisDao.inserir(PaisDao.java:26)
at classe.controle.Beans.PaisBean.inserir(PaisBean.java:63)
at classe.controle.Beans.PaisBean.(PaisBean.java:53)
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 java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at com.sun.faces.mgbean.BeanBuilder.newBeanInstance(BeanBuilder.java:188)
at com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:102)
at com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:409)
at com.sun.faces.mgbean.BeanManager.create(BeanManager.java:269)
at com.sun.faces.el.ManagedBeanELResolver.resolveBean(ManagedBeanELResolver.java:244)
at com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:116)
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.AstIdentifier.getValue(AstIdentifier.java:45)
at org.apache.el.parser.AstValue.getValue(AstValue.java:86)
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
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:169)
at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:205)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:355)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:164)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:312)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:309)
at com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185)
at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:129)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:55)
at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:43)
at org.primefaces.component.fieldset.FieldsetRenderer.encodeContent(FieldsetRenderer.java:95)
at org.primefaces.component.fieldset.FieldsetRenderer.encodeMarkup(FieldsetRenderer.java:76)
at org.primefaces.component.fieldset.FieldsetRenderer.encodeEnd(FieldsetRenderer.java:53)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:59)
at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:43)
at org.primefaces.component.panel.PanelRenderer.encodeContent(PanelRenderer.java:229)
at org.primefaces.component.panel.PanelRenderer.encodeMarkup(PanelRenderer.java:152)
at org.primefaces.component.panel.PanelRenderer.encodeEnd(PanelRenderer.java:75)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1763)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1756)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:401)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:410)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
OK.Graças à Deus e Nossa Senhora!!!

Em algum lugar diz ERRO: valor nulo na coluna "pais_descricao" viola a restrição não-nula.

Mas eu verifiquei no banco e o campo pais_descricao está preenchido, ou seja, não está nulo.

O que pode ser esta enxurrada de mensagens :?:

2 Respostas

F

O erro ocorre no banco:

veja a linha

valor nulo na coluna “pais_descricao” viola a restrição não-nula

pais_descricao não poder ser nulo.

coloca um break point, antes de gravar, a inspeciona o objeto a ser gravado, para ver se está nulo a variável

newuser

Eu disse no final da mensagem:

O insert ocorreu. Eu verifiquei a tabela no banco e os dados que eu acabei de inserir estão lá.
Não tem nenhum campo vazio, ou seja, a variável também não está vazia.

Então não pode ser isso, aparentemente.

Criado 4 de abril de 2012
Ultima resposta 5 de abr. de 2012
Respostas 2
Participantes 2