Pessoal,
Sou iniciante em Struts e estou fazendo um trabalho. Gostaria de montar uma jsp contendo uma tabela de livros, tendo associado a cada linha linha da tabela (um livro) um rádio que receberá o codigo do livro e ao dar submit nesta página chamará a jsp com os dados do livro marcado para alteração.
Segui mais ou menos o exemplo da apostila JakartaStrutsLive.pdf, (http://www.cin.ufpe.br/~rdma/documentos/JakartaStrutsLive.pdf).
Traduzi os objetos e classes do exemplo do livro para meu escopo. Não mexi em mais nada.
No entanto tá dando um erro na jsp que deveria mostrar a lista. Tô desesperada. Se alguém tiver algum exemplo parecido prá fazer essa lista com radios para alteração e uma lista com checkboxes para fazer exclusões mútuas agradeço.
Vou passar os códigos e a página de erro a seguir prá ver se alguém pode me ajudar:
//////////////////////////////////////////////////
classe Livro:
public class Livro extends Publicacao {
private int isbn;
private String autor;
private String assunto;
private int numEdicao;
private int qtdPaginas;
public Livro(){}
public Livro(int codigo, String titulo, int ano, String tipoMidia, String editora, int isbn, String autor, String assunto, int numEdicao, int qtdPaginas){
super(codigo,titulo,ano,tipoMidia,editora);
this.isbn = isbn;
this.autor = autor;
this.assunto = assunto;
this.numEdicao = numEdicao;
this.qtdPaginas = qtdPaginas;
}
…//getters & setters
}
//////////////////////////////////////////////////
Classe ItemLivro:
public class ItemLivro implements Serializable{
private Livro livro = new Livro();
private boolean marcado = false;
public Livro getLivro() {
return livro;
}
public void setLivro(Livro livro) {
this.livro = livro;
}
public boolean isMarcado() {
return marcado;
}
public void setMarcado(boolean marcado) {
this.marcado = marcado;
}
}
//////////////////////////////////////////////////
Meu ActionForm:
public class ListaLivrosActionForm extends org.apache.struts.action.ActionForm {
private ItemLivro[] livros = new ItemLivro[0];
public ItemLivro getLivro(int index) {
return getLivros()[index];
}
public void setLivro(int index, ItemLivro livro) {
this.getLivros()[index] = livro;
}
public void setListaLivros(List lista) {
List listaLivros = new ArrayList(lista.size());
Iterator iterator = lista.iterator();
while (iterator.hasNext())
{
ItemLivro itemLivro = new ItemLivro();
Livro livro = (Livro) iterator.next();
itemLivro.setLivro(livro);
listaLivros.add(itemLivro);
}
livros=((ItemLivro[]) listaLivros.toArray(new ItemLivro[listaLivros.size()]));
}
public ItemLivro[] getLivros() {
return livros;
}
public void setLivros(ItemLivro[] livros) {
this.livros = livros;
}
}
//////////////////////////////////////////////////
Minha Action:
public class ListarLivrosAlteracaoAction extends org.apache.struts.action.Action {
private final static String SUCCESS = “listaAlteracaoLivros”;
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
MidiaDAO operacao = new MidiaDAO();
ListaLivrosActionForm listaLivrosForm = (ListaLivrosActionForm) form;
List livros = operacao.listarLivros();
listaLivrosForm.setListaLivros(livros);
request.setAttribute(“livros”, listaLivrosForm);
return (mapping.findForward(SUCCESS));
}
}
//////////////////////////////////////////////////
Meu struts-config.xml:
…
<form-beans>
<form-bean name=“ListaLivrosActionForm” type=“controles.ActionForms.ListaLivrosActionForm”/>
</form-beans>
…
<global-forwards>
…
<forward name=“exibeListaLivrosAlteracao” path="/ListarLivrosAlteracao.do"/>
…
</global-forwards>
<action-mappings>
…
<action path="/ListarLivrosAlteracao"
name=“ListaLivrosActionForm"
type=“controles.Actions.ListarLivrosAlteracaoAction"
scope=“request” validate=“false”>
<forward name=“listaAlteracaoLivros” path=”/listaLivrosAlteracao.jsp”/>
</action>
…
</action-mappings>
…
//////////////////////////////////////////////////
Minha JSP que exibe a lista: ([color=red][/color]A MINHA JSP FICOU UM POUCO DIFERENTE DA DO EXEMPLO)
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”
“http://www.w3.org/TR/html4/loose.dtd”>
<%@ page contentType=“text/html” pageEncoding=“UTF-8”%>
<%@ taglib uri="/WEB-INF/struts-bean" prefix=“bean” %>
<%@ taglib uri="/WEB-INF/struts-html" prefix=“html” %>
<%@ taglib uri="/WEB-INF/struts-logic" prefix=“logic” %>
<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %>
<html>
<head>
<meta http-equiv=“Content-Type” content=“text/html; charset=UTF-8”>
<title><bean:message key=“titulo.lista.alteracao.livro”/></title>
</head>
<body>
<center><h1><bean:message key=“cabecalho.lista.alteracao.livro”/></h1><center>
<html:form action="/tratarOpcao.do">
<table border=“1”>
<tr>
<td>Código </td>
<td>ISBN </td>
<td>Título </td>
<td>Autor </td>
<td>Assunto </td>
<td>Editora </td>
<td>Nº Edição </td>
<td>Ano </td>
<td>Total de Páginas</td>
<td>Tipo de Mídia </td>
</tr>
<logic:iterate id=“itemLivro” indexId=“index” name=“ListaLivrosActionForm” property=“livros”>
<tr>
<td><html:radio property=“itemLivro” value=“marcado”/>
<bean:write name=“itemLivro” property=“codigo” /></td>
<td><bean:write name=“itemLivro” property=“isbn” /></td>
<td><bean:write name=“itemLivro” property=“titulo” /></td>
<td><bean:write name=“itemLivro” property=“autor” /></td>
<td><bean:write name=“itemLivro” property=“assunto” /></td>
<td><bean:write name=“itemLivro” property=“editora” /></td>
<td><bean:write name=“itemLivro” property=“numEdicao” /></td>
<td><bean:write name=“itemLivro” property=“ano” /></td>
<td><bean:write name=“itemLivro” property=“qtdPaginas”/></td>
<td><bean:write name=“itemLivro” property=“tipoMidia” /></td>
</tr>
</logic:iterate>
</table>
<html:submit property=“botao” value=“Alterar Livro”>
<bean:message key=“botao.lista.alteracao.livro.sumit”/>
</html:submit>
</html:form>
</body>
</html>
//////////////////////////////////////////////////
Agora o malfadado erro:
HTTP Status 500 -
type Exception report
message
descriptionThe server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: javax.servlet.jsp.JspException: No getter method available for property itemLivro for bean under name org.apache.struts.taglib.html.BEAN
root cause
javax.servlet.jsp.JspException: No getter method available for property itemLivro for bean under name org.apache.struts.taglib.html.BEAN
note The full stack traces of the exception and its root causes are available in the Sun Java System Application Server 9.1_01 logs.
Sun Java System Application Server 9.1_01
Desde já agradeço muito a quem puder me ajudar. Realmente tô muito desesperada :roll:
Abçs,
Mônica.