No getter method for property

3 respostas
F

Pessoal,

Estou começando a trabalhar com struts e estou com dificuldades para listar algunsa dados de minha base de dados. estou recebendo a seguinte excessão:

javax.servlet.jsp.JspException: No getter method for property: "codPremio" of bean: "premio"
	org.apache.struts.taglib.TagUtils.lookup(TagUtils.java:987)
	org.apache.struts.taglib.bean.WriteTag.doStartTag(WriteTag.java:225)
	org.apache.jsp.pages.listPremios_jsp._jspx_meth_bean_write_0(org.apache.jsp.pages.listPremios_jsp:378)
	org.apache.jsp.pages.listPremios_jsp._jspService(org.apache.jsp.pages.listPremios_jsp:155)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
	org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)
	org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:263)
	org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398)
	org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:318)
	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)
	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
	org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
	org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:81)

Abaixo segue parte de meu action:

AdminPremios adminPremios = new AdminPremios();
premios = adminPremios.getPremioList();
HttpSession session = request.getSession();
session.setAttribute("premioListBean", premios);

Minha JSP é a seguinte:

...
<logic:notPresent name="premioListBean" scope="session">
  <logic:redirect forward="error"/>
</logic:notPresent>
...
<%-- loop que percorre a Collection de usuarios --%>
<logic:iterate name="premioListBean" id="premio" >
   <tr>
      <td align="center">
         <bean:write name="premio" property="codPremio"/>
      </td>
      <td>
         <html:link page="/editUser.do" paramId="idUsuario" paramName="premio" paramProperty="idUsuario">
            <bean:write name="premio" property="nomPremio"/>
         </html:link>
      </td>
      <td><bean:write name="premio" property="datInicioValidade"/></td>
      <td><bean:write name="premio" property="datFinalValidadePremio"/></td>
      <td>
         <html:link page="/deleteUser.do" paramId="idUsuario" paramName="premio" paramProperty="idUsuario">
         <bean:message key="prompt.excluir"/>
         </html:link>
      </td>
    </tr>
</logic:iterate>
...

Parece simples o erro, mas não consegui resolver.... algum poderia me da uma luz ai!

Valeu

3 Respostas

T

o erro quer dizer que o objeto do tipo AdminPremios não tem getter nem setter para o atributo ‘codPremio’. Certifique-se de que você digitou certo o nome do atributo nesse trecho

<bean:write name="premio" property="codPremio"/>

ou se no seu FormAction possui esses métodos!

F

Thiago,

eu estou seguindo um tutorial que peguei no site do j2eebrasil: http://www.j2eebrasil.com.br/jsp/artigos/artigo.jsp?idArtigo=0011.

Fiz quase igual de lá, a diferente que já estou aplicando na minha própria aplicação. Criei 2 classes, uma Premio e outra AdminPremio, na Premio é que estão meus métodos de get e set, veja:

Premio:
public class Premio {

	private int codPremio;

	private String nomPremio;

	protected int getCodPremio() {
		return codPremio;
	}

	protected void setCodPremio(int codPremio) {
		this.codPremio = codPremio;
	}

	protected String getNomPremio() {
		return nomPremio;
	}

	protected void setNomPremio(String nomPremio) {
		this.nomPremio = nomPremio;
	}
}
AdminPremio:
public class AdminPremios {

	public LinkedList getPremioList() throws SQLException {
		Connection conn = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		LinkedList premios = new LinkedList();
		try {

			Conexao c = new Conexao();
			conn = c.getConnection();
			stmt = conn.prepareStatement("select * from premio");
			rs = stmt.executeQuery();
			while (rs.next()) {

				Premio premio = new Premio();

				premio.setCodPremio(rs.getInt("cod_premio"));
				premio.setNomPremio(rs.getString("nom_premio"));
				premios.add(premio);
		} catch (SQLException e) {
			throw e;
		} finally {
			closeConnection(conn, stmt, rs);
		}
		return premios;
	}
E o meu action está assim:
public class ListPremioAction extends Action {

	/* Metódo que invoca a camada de negócios. */
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {

		LinkedList premios = null;
		ActionErrors errors = new ActionErrors();
		try {
			AdminPremios adminPremios = new AdminPremios();
			premios = adminPremios.getPremioList();
			HttpSession session = request.getSession();
			session.setAttribute("premioListBean", premios);
		} catch (SQLException e) {
			System.out.println("Erro carregando a lista de usuários" + e);
			return (mapping.findForward("failure"));
		}

		return (mapping.findForward("success"));

	}
}
T

Faça a sua classe Premio ser filha da classe ActionForm do struts! Não esqueça de mapeá-la no struts-config.xml.

Criado 14 de agosto de 2006
Ultima resposta 14 de ago. de 2006
Respostas 3
Participantes 2