Dúvidas com Struts e Hibernate

0 respostas
J

Olá pessoal,
Sou novato na área de JAVA e estou com uma dúvida:

Estou com um pequeno projeto de Java composto, por 3 JSP: a primeira é a index, e as outras são uma para cadastro e outra para consulta.

quando clico no link para cadastro apresenta o seguinte erro:

HTTP Status 500 - 

--------------------------------------------------------------------------------

type Exception report

message 

description The server encountered an internal error () that prevented it from fulfilling this request.

exception 

org.apache.jasper.JasperException: An exception occurred processing JSP page /pessoa.jsp at line 12

9: 	<html:form method="post" action="Controle.do">
10: 	
11: 		Informe seu Nome<br/>
12: 			<html:text property="pessoa.nome" />
13: 		
14: 		<br/><br/>
15: 		


Stacktrace:
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:401)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


root cause 

javax.servlet.ServletException: javax.servlet.jsp.JspException: Invalid argument looking up property: "pessoa.nome" of bean: "org.apache.struts.taglib.html.BEAN"
	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:862)
	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
	org.apache.jsp.pessoa_jsp._jspService(pessoa_jsp.java:178)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


root cause 

javax.servlet.jsp.JspException: Invalid argument looking up property: "pessoa.nome" of bean: "org.apache.struts.taglib.html.BEAN"
	org.apache.struts.taglib.TagUtils.lookup(TagUtils.java:960)
	org.apache.struts.taglib.html.BaseFieldTag.prepareValue(BaseFieldTag.java:121)
	org.apache.struts.taglib.html.BaseFieldTag.renderInputElement(BaseFieldTag.java:102)
	org.apache.struts.taglib.html.BaseFieldTag.doStartTag(BaseFieldTag.java:81)
	org.apache.jsp.pessoa_jsp._jspx_meth_html_005ftext_005f0(pessoa_jsp.java:256)
	org.apache.jsp.pessoa_jsp._jspx_meth_html_005fform_005f0(pessoa_jsp.java:204)
	org.apache.jsp.pessoa_jsp._jspService(pessoa_jsp.java:91)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


note The full stack trace of the root cause is available in the Apache Tomcat/6.0.24 logs.


--------------------------------------------------------------------------------

Apache Tomcat/6.0.24

Eu estou utilizando o mysql como banco de dados.

Vou postar as classes:

Classe Pessoa da package entity.

package entity;

import javax.persistence.*;

@Entity
@Table
public class Pessoa {

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column
	private Integer idpessoa;
	@Column(length = 35)
	private String nome;
	@Column(length = 35)
	private String email;

	public Integer getIdpessoa() {
		return idpessoa;
	}

	public void setIdpessoa(Integer idpessoa) {
		this.idpessoa = idpessoa;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public Pessoa(Integer idpessoa, String nome, String email) {
		super();
		this.idpessoa = idpessoa;
		this.nome = nome;
		this.email = email;
	}

	public Pessoa() {
	}

	@Override
	public String toString() {
		return "Pessoa [idpessoa=" + idpessoa + ", nome=" + nome + ", email="
				+ email + "]";
	}

}

Classe PessoaDao da packge persistence.

package persistence;

import org.hibernate.*;
import entity.*;
import java.util.*;

public class PessoaDao {
	
	Session session;			// Abrir a sessção
	Transaction transaction;	// Iniciar e fechar a transação
	Query query;				// Consulta - HQL - Hibernate Query Language
	Criteria criteria;			// Consulta (mais elaborada)
	
	@SuppressWarnings("unchecked")
	public List<Pessoa> findByAll() throws Exception {
		
		session = HibernateUtil.getSessionFactory().openSession();
		List<Pessoa> listapessoa = session.createQuery("from Pessoa p").list();
		session.close();
		
		return listapessoa;
	}
	
	/*
	@SuppressWarnings("unchecked")
	public List<Pessoa> findByAll() throws Exception{
		session = HibernateUtil.getSessionFactory().openSession();
		return session.createQuery("from Pessoa p").list(); 
		
	}
	*/
	
	@SuppressWarnings("unchecked")
	public List<Pessoa> findAll() throws Exception{
		
		session = HibernateUtil.getSessionFactory().openSession();
		query = session.createQuery("select p from Pessoa as p order by p.nome asc");
		
		return query.list();
	}
	
	public Pessoa finByCode(Integer cod) throws Exception{
		
		session = HibernateUtil.getSessionFactory().openSession();
		Pessoa pessoa = (Pessoa) session.get(Pessoa.class, cod);
		session.close();
				
		return pessoa;
	}

	public void save(Pessoa pessoa) throws Exception{
		
		session = HibernateUtil.getSessionFactory().openSession();
		transaction = session.beginTransaction();
		session.save(pessoa);
		transaction.commit();
		session.close();
	}
	
	public void deletar(Pessoa pessoa) throws Exception{
		session = HibernateUtil.getSessionFactory().openSession();
		transaction = session.beginTransaction();
		session.delete(pessoa);
		transaction.commit();
		session.close();	
	}
	
	public void alterar(Pessoa pessoa) throws Exception{
		session = HibernateUtil.getSessionFactory().openSession();
		transaction = session.beginTransaction();
		session.update(pessoa);
		transaction.commit();
		session.close();
	}
	
	@SuppressWarnings("unchecked")
	public List<Pessoa> listarPessoa() throws Exception{
		session = HibernateUtil.getSessionFactory().openSession();
		List<Pessoa> lista = session.createCriteria(Pessoa.class).list();
		
		//List<Pessoa> lista = (List<Pessoa>) session.createQuery("from Pessoa p");
		//session.close();
		
		return lista;
	}
	
}

Classe ManagerAction da package manager.

package manager;

import org.apache.struts.action.ActionForm;
import entity.*;
import persistence.*;
import java.util.*;

@SuppressWarnings("serial")
public class ManagerAction extends ActionForm{
	
	private Pessoa pessoa;
	private List<Pessoa> listapessoa;
	//private List<Pessoa> listapessoa = new ArrayList<Pessoa>();
	
	public Pessoa getPessoa() {
		return pessoa;
	}
	public void setPessoa(Pessoa pessoa) {
		this.pessoa = pessoa;
	}
	public List<Pessoa> getListapessoa() {
		
		//Cria espaço de memória para listapessoa
		listapessoa = new ArrayList<Pessoa>();
		
		try{
			
			PessoaDao pd = new PessoaDao();
			listapessoa = pd.findByAll();
		
			// Busca todos os dados do banco
			// listapessoa = new PessoaDao().findAll();
			
		}catch(Exception e){
			e.printStackTrace();
		}
		
		return listapessoa;
	}
		public void setListapessoa(List<Pessoa> listapessoa) {
		this.listapessoa = listapessoa;
	}
	@Override
	public String toString() {
		return "ManagerAction [pessoa=" + pessoa + ", listapessoa="
				+ listapessoa + "]";
	}
}

Classe Controle da package control.

package control;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import manager.*;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import persistence.PessoaDao;

public class Controle extends Action{
	
	Integer	cod = 0;
	String 	cmd = "";
	String parametro = "";
	
	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
			
			cmd = request.getParameter("cmd");
			cod = new Integer(request.getParameter("id"));
			
			if (cmd.equalsIgnoreCase("excluir")){
				try{					
					delecao(null,null,request,response);
					parametro = "consulta";
				}catch(Exception e){
					e.printStackTrace();
				}
			}
			
			if (cmd.equalsIgnoreCase("alterar")){
				try{					
					inclusao(null,null,request,response);
					parametro = "fim";
				}catch(Exception e){
					e.printStackTrace();
				}
			}
			
		return mapping.findForward(parametro);
	}
	
	public ActionForward delecao(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		
		try{			
			PessoaDao pd = new PessoaDao();
			pd.deletar(pd.finByCode(cod));
			
		}catch(Exception e){			
			e.printStackTrace();		
		}

		return null;
	}
	
	public ActionForward inclusao(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		
		try{			
			PessoaDao pd = new PessoaDao();
			
			pd.save(((ManagerAction)form).getPessoa());
			request.setAttribute("mensagem", "Dados Gravados");
			
		}catch(Exception e){			
			request.setAttribute("mensagem", e.getMessage());		
		}

		return null;
	}	
	
}

A Classe HibernateUtil da package persistence

package persistence;


import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.SessionFactory;


public class HibernateUtil {
    private static final SessionFactory sessionFactory;

    static {
        try {
            
            sessionFactory = new AnnotationConfiguration().configure("config/mysql_hibernate.cfg.xml").buildSessionFactory();
        } catch (Throwable ex) {
            
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }
}

A XML da package config

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/struts3</property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.connection.password">coti</property>
    <mapping class="entity.Pessoa"/>


 </session-factory>
</hibernate-configuration>

O arquivo struts-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
  <data-sources>
  </data-sources>
  <form-beans>
    <form-bean name="ManagerAction" type="manager.ManagerAction"/>
  </form-beans>
  <global-exceptions>
  </global-exceptions>
  <global-forwards>
  </global-forwards>
  <action-mappings>
    <action path="/Controle" name="ManagerAction" type="control.Controle" scope="request">
      <forward name="consulta" path="/consulta.jsp"/>
      <forward name="fim" path="/pessoa.jsp"/>
    </action>
  </action-mappings>
  <controller processorClass="org.apache.struts.tiles.TilesRequestProcessor"/>
  <message-resources parameter="MessageResources"/>
  <plug-in className="org.apache.struts.tiles.TilesPlugin">
    <set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml"/>
    <set-property property="moduleAware" value="true"/>
  </plug-in>
  <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
    <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
  </plug-in>
</struts-config>

A JPS index

<h1>Projeto com Cadastro e Consulta</h1>
<h2>Hibernate e Struts</h2>

<br/>
<p/>
<br/>

<a href="pessoa.jsp">Cadastro</a>
<br/><br/>
<a href="consulta.jsp">Consultar Dados</a>
<br/>

A JSP consulta ([color=blue]esta está funcionando[/color])

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>


<html:html>

	<html:form method="post" action="Controle">
	
		<table border="1" width="50%">
		
			<tr>
			
				<th align="center">IdPessoa</th>
				<th align="center">Nome</th>
				<th align="center">Email</th>
				<th align="center" bgcolor="#ff0033">Deletar</th>
				<th align="center" bgcolor="#6699ff">Alterar</th>
							
			</tr>
			
			<logic:iterate id="pessoa" name="ManagerAction" property="listapessoa">
			
				<tr>
				
					<td align="center"><bean:write name="pessoa" property="idpessoa"/></td>
					<td align="center"><bean:write name="pessoa" property="nome"/></td>
					<td align="center"><bean:write name="pessoa" property="email"/></td>
					
					<td  align="center"  bgcolor="#ff9900">
						<a href="Controle.do?cmd=excluir&alterar&id=<bean:write name="pessoa" property="idpessoa"/>">Excluir</a>
					</td>
					
					<td  align="center" bgcolor="#33ccff">Alterar</td>
				
				</tr>
			
			</logic:iterate>
		
		</table>
	
	</html:form>
	
	<p/>
	
	<a href="index.jsp">Voltar</a>

</html:html>

A JSP pessoa ([color=red]ESTA QUE ESTÁ APRESENTANDO ERRO[/color])

<%@taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
<%@taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
<%@taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %>

<html:html>

	<h3>Cadastro de Emails</h3>
	
	<html:form method="post" action="Controle.do">
	
		Informe seu Nome<br/>
			<html:text property="pessoa.nome" />
		
		<br/><br/>
		
		Informe seu Email<br/>
			<html:text property="pessoa.email" />
			
		<br/><br/>
		
		<html:submit value="Realizar Cadastro" />
		
		<p>
		
			<bean:write name="mensagem" ignore="true" />
		
		</p>
	
	</html:form>
	
	<br/><br/>
	<p/>
	
	<table border="1" width="50%">
	
		<logic:iterate name="ManagerAction" property="listapessoa" id="pessoa">
		
		<tr>
		
			<td> <bean:write name="pessoa" property="idpessoa" />	</td>
			<td> <bean:write name="pessoa" property="nome" />		</td>
			<td> <bean:write name="pessoa" property="email" />		</td>
		
		</tr>
		
		
		
		</logic:iterate>
	
	</table>
	
	<a href="index.jsp">Voltar</a>

</html:html>

Já tentei tudo que eu sei.

Se alguém puder me ajudar, desde já agradeço!

Criado 17 de abril de 2011
Respostas 0
Participantes 1