No getter method for property

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

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>

[quote]private String usuariologin;

public String getUsuarioLogin() {
return usuariologin;
} [/quote]

Ou você altera a variável para

private String usuarioLogin

Ou você altera o get para

public String getUsuariologin() {
return usuariologin;
}

Abs

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

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;
	}

Sim

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

É 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.

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

Vlw galera, muito obrigado…