E aí Rodrigo! Sou eu quem estava mandando aquelas dúvidas pra vc!
Segue o código da minha página contato.jsp:
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>My JSF 'Contato.jsp' starting page</title>
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<f:view>
<h:panelGrid id="panelContato" columns="8">
<h:outputText value="id"></h:outputText>
<h:inputText id="ID" value="#{contatoManaged.contato.id}"></h:inputText>
<h:outputText value="Nome"></h:outputText>
<h:inputText value="#{contatoManaged.contato.nome}"></h:inputText>
<h:outputText value="Apelido"></h:outputText>
<h:inputText value="#{contatoManaged.contato.apelido}"></h:inputText>
<h:outputText value="Telefone"></h:outputText>
<h:inputText value="#{contatoManaged.contato.telefone}"></h:inputText>
<h:commandButton value="Salvar" action="#{contatoManaged.salvarContato}" />
<br><br>
</h:panelGrid>
<h:panelGrid id="panelListaContatos" columns="1">
<h:outputText value="Lista de Contatos" />
<br><br>
<h:dataTable var="contato" value="#{contatoManaged.contatos}" rows="3">
<h:column>
<f:facet name="header">
<h:outputText value="Nome" />
</f:facet>
<h:outputText value="#{contato.nome}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Apelido" />
</f:facet>
<h:outputText value="#{contato.apelido}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Telefone" />
</f:facet>
<h:outputText value="#{contato.telefone}" />
</h:column>
</h:dataTable>
</h:panelGrid>
<br>
</f:view>
</body>
</html>
Eu procurei por esse erro no google mas não encontrei uma resposta satisfatória… vou colocar tb meu managed Bean :
public class ContatoManaged {
public ContatoManaged() {}
private Contato contato = new Contato();
private GerenciaContatos gerenciaContatosManager;
public void setGerenciaContatosManager(GerenciaContatos gerenciaContatosManager) {
this.gerenciaContatosManager = gerenciaContatosManager;
}
public GerenciaContatos getGerenciaContatosManager() {
return gerenciaContatosManager;
}
public List getContatos(){
return this.gerenciaContatosManager.getContatos();
}
public Contato getContato() {
return contato;
}
public void setContato(Contato contato) {
this.contato = contato;
}
}
Meu faces-config.xml está dessa forma:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN" "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
<faces-config>
<!-- Allows you to inject Spring beans into JSF managed beans... -->
<application>
<variable-resolver>org.springframework.web.jsf.DelegatingVariableResolver</variable-resolver>
</application>
<managed-bean>
<managed-bean-name>contatoManaged</managed-bean-name>
<managed-bean-class>br.com.contato.backing.ContatoManaged</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>gerenciaContatosManager</property-name>
<property-class>br.com.contato.business.GerenciaContatos</property-class>
<value>#{gerenciaContatosManager}</value>
</managed-property>
</managed-bean>
<navigation-rule>
<from-view-id>/Contato.jsp</from-view-id>
</navigation-rule>
</faces-config>
E o meu applicationContext.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>org.gjt.mm.mysql.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/artfesta</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>admin</value>
</property>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
<property name="mappingResources">
<list>
<value>br/com/contato/beans/Contato.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
</props>
</property>
</bean>
<bean id="contatoDao" class="br.com.contato.DAO.Impl.ImplContatoDAO">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
<bean id="gerenciaContatos" class="br.com.contato.business.GerenciaContatos">
<property name="contatoDao">
<ref bean="contatoDao"/>
</property>
</bean>
<bean id="gerenciaContatosManager" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="transactionManager"/>
</property>
<property name="target">
<ref bean="gerenciaContatos"/>
</property>
<property name="transactionAttributes">
<props>
<!-- <prop key="salvar*">PROPAGATION_REQUIRED</prop>
<prop key="remover*">PROPAGATION_REQUIRED</prop> -->
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
</beans>
E a minha classe que contém o método pra salvar o contato:
public class GerenciaContatos {
private ContatoDAO dao;
public void setContatoDao(ContatoDAO dao) {
this.dao = dao;
}
public List getContatos(){
return dao.getContatos();
}
public Contato salvarContato (Contato objContato){
dao.salvarContato(objContato);
return objContato;
}
public void removerContato (Contato objContato){
dao.removerContato(objContato);
}
public Contato getContato(Long contatoId){
return dao.getContato(contatoId);
}
}
Esse erro tb acontece em um projeto de exemplo que eu peguei (hibernate + spring + jsf tb…)… logo quando eu entro na página, aparece a mesma mensagem no console do Tomcat… nos dois eu estou usando o MySQL 5…
Muito Obrigado!
Douglas Grava