No getter method for property

7 respostas
T

Galera, estou com este erro quando vou executar minha jsp… já li, inclusive aqui no forum o mesmo problema de outros… mas não consegui adaptar a logica ao meu problema… acho que estou passando alguns códigos errados…

Deem uma olhada por favor…

login.jsp

<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<html:html>
<head><title>Sistema de Login do Struts</title></head>
<html:errors/>
<html:form action="/efetuaLogin">
	
	<table>
		<tr>
			<td>Usuario:</td>
			<td><html:text property="usuario.usuariologin"/></td>
		</tr>
		
		<tr>
			<td>Senha:</td>
			<td><html:password property="usuario.senha"/></td>
		</tr>
		
		<tr>
			<td></td>
			<td><html:submit>Enviar dados</html:submit></td>
		</tr>
	</table>
	
</html:form>
</html:html>

LoginAction.java

package br.com.thiago.struts.action;

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

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 br.com.thiago.jdbc.dao.UsuarioDAO;
import br.com.thiago.jdbc.modelo.Usuario;
import br.com.thiago.struts.form.LoginForm;

public class LoginAction extends Action {
	@Override
	public ActionForward execute(ActionMapping map, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		
		System.out.println("Tentando se logar...");
		
		LoginForm login = ((LoginForm) form);
		Usuario usuario = login.getUsuario();
		
		request.setAttribute("login", usuario);
		
		if(!new UsuarioDAO().existeUnico(usuario)) {
			return map.findForward("erro_login");
		}
		
		return map.findForward("ok_login");
		
	}
}

LoginForm

package br.com.thiago.struts.form;

import org.apache.struts.action.ActionForm;
import br.com.thiago.jdbc.modelo.Usuario;

public class LoginForm extends ActionForm {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	private Usuario usuario = new Usuario();
	
	public Usuario getUsuario() {
		return this.usuario;
	}
	
	private String usuariologin;
	private String senha;

	public String getUsuarioLogin() {
		return usuariologin;
	}
	public void setUsuarioLogin(String usuariologin) {
		this.usuariologin = usuariologin;
	}
	public String getSenha() {
		return senha;
	}
	public void setSenha(String senha) {
		this.senha = senha;
	}
	
	

}

Usuario.java

package br.com.thiago.jdbc.modelo;

public class Usuario {

	private Long id;
	private String usuario;
	private String senha;

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getUsuario() {
		return usuario;
	}

	public void setUsuario(String usuario) {
		this.usuario = usuario;
	}

	public String getSenha() {
		return senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

}

UsuarioDAO.java

package br.com.thiago.jdbc.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import br.com.thiago.jdbc.ConnectionFactory;
import br.com.thiago.jdbc.modelo.Usuario;

public class UsuarioDAO {

	private Connection connection;

	public UsuarioDAO() throws SQLException {
		this.connection = ConnectionFactory.getConnection();
	}

	public boolean existeUnico(Usuario usuario) throws SQLException {
		
		PreparedStatement stmt = connection
				.prepareStatement("select * from usuario where usuario=? and senha=?");
		
		stmt.setString(1, usuario.getUsuario());
		stmt.setString(2, usuario.getSenha());
		ResultSet rs = stmt.executeQuery();

		try {

			if (!rs.next()) {
				return false;
			}

			return !rs.next();

		} finally {
			rs.close();
			stmt.close();
		}
	}

	public List<Usuario> getLista() throws SQLException {

		PreparedStatement stmt = this.connection
				.prepareStatement("select * from usuario");
		ResultSet rs = stmt.executeQuery();

		List<Usuario> usuarios = new ArrayList<Usuario>();

		while (rs.next()) {

			Usuario usuario = new Usuario();
			usuario.setId(rs.getLong("id"));
			usuario.setUsuario(rs.getString("usuario"));
			usuario.setSenha(rs.getString("senha"));
			usuarios.add(usuario);
		}

		rs.close();
		stmt.close();

		return usuarios;
	}

}

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 /login.jsp at line 10

7: 	<table>
8: 		<tr>
9: 			<td>Usuario:</td>
10: 			<td><html:text property="usuario.usuariologin"/></td>
11: 		</tr>
12: 		
13: 		<tr>


Stacktrace:
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:398)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

root cause

javax.servlet.ServletException: javax.servlet.jsp.JspException: No getter method for property: "usuario.usuariologin" of bean: "br.com.thiago.struts.form.LoginForm"
	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:850)
	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
	org.apache.jsp.login_jsp._jspService(login_jsp.java:81)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

root cause

javax.servlet.jsp.JspException: No getter method for property: "usuario.usuariologin" of bean: "br.com.thiago.struts.form.LoginForm"
	org.apache.struts.taglib.TagUtils.lookup(TagUtils.java:915)
	org.apache.struts.taglib.html.BaseFieldTag.prepareValue(BaseFieldTag.java:123)
	org.apache.struts.taglib.html.BaseFieldTag.renderInputElement(BaseFieldTag.java:102)
	org.apache.struts.taglib.html.BaseFieldTag.doStartTag(BaseFieldTag.java:80)
	org.apache.jsp.login_jsp._jspx_meth_html_005ftext_005f0(login_jsp.java:203)
	org.apache.jsp.login_jsp._jspx_meth_html_005fform_005f0(login_jsp.java:158)
	org.apache.jsp.login_jsp._jspx_meth_html_005fhtml_005f0(login_jsp.java:105)
	org.apache.jsp.login_jsp._jspService(login_jsp.java:74)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

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

7 Respostas

caiomacedor

tandrade86 pelo que vejo você criou uma variavel no VO e esta passando outro nome na jsp:
Variavel declarada: [color=red]private String usuario;[/color]
e você esta passando essa na jsp: [color=red]usuarioLogin[/color]

faça isso: <td><html:text property="usuario.usuario"/></td>
Andre_Fonseca

private String usuariologin;

public String getUsuarioLogin() {

return usuariologin;

}  </blockquote>

Ou você altera a variável para

private String usuarioLogin

Ou você altera o get para

public String getUsuariologin() {

return usuariologin;

}

Abs

T

Opa, agora sim funcionou em galera…

Muito obrigado mesmo… eu sabia que estava escrevendo alguma coisa errada, mas não sabia ao certo aonde… obrigado

T

Uma outra pergunta…

Quando eu coloco:

<td><html:text property="usuario.usuario"/></td>

ele especificamente puxa daonde???

disto aqui?

public Usuario getUsuario() {
		return this.usuario;
	}
Andre_Fonseca

Sim

Ele sempre vai utilizar o get da variável do jeito que tá escrita apenas substituindo a primeira letra pra maiúscula…

caiomacedor

É isso ai cara ele pega daqui mesmo:

public Usuario getUsuario() { return this.usuario; }

Se desejar visualizar isso coloca um breakPoint nessa variavel e deguga que você vai vê tudo processo.

T

É vou fazer isso, colocar um break point e ver o que ele tá fazendo…

Vlw galera, muito obrigado…

Criado 22 de julho de 2008
Ultima resposta 22 de jul. de 2008
Respostas 7
Participantes 3