coloca isso numa tablea ou usa displaytag fica bem mais simples…
Realmente compensa usar a displaytag…mas esse tópico deve ajudar:
tenho uma jsp chamada lista.jsp onde só peço pra me mostrar uma lista de contatos:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<!-- for -->
<c:forEach var="contato" items="${contatos}">
${contato.id} - ${contato.nome} <br/>
</c:forEach>
</html>
minha classe ListaContatosAction:
package br.com.treinamento.struts.action;
import java.util.List;
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.treinamento.dao.ContatoDAO;
import br.com.treinamento.jdbc.modelo.Contato;
public class ListaContatosAction extends Action {
public ActionForward execute(ActionMapping map, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception{
//pesquisa completa no BD
List<Contato> listaContato = new ContatoDAO().getLista();
request.setAttribute("contatos", listaContato);
return map.findForward("listaContato");
}
}
tenho minha classe dao ContatoDAO
package br.com.treinamento.dao;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import br.com.treinamento.jdbc.ConnectionFactory;
import br.com.treinamento.jdbc.modelo.Contato;
public class ContatoDAO {
/**
* Variável do tipo Connection que possibilita a conexão ao banco de dados
*/
private Connection conn;
public ContatoDAO() throws SQLException {
this.conn = ConnectionFactory.getConnection();
}
/**
* Método que adiciona valores à tabela
*
* @param contato
* @throws SQLException
*/
public void adiciona(Contato contato) throws SQLException {
PreparedStatement stmt = conn
.prepareStatement("INSERT INTO CONTATOS(NOME,EMAIL,ENDERECO) VALUES (?,?,?)");
stmt.setString(1, contato.getNome());
stmt.setString(2, contato.getEmail());
stmt.setString(3, contato.getEndereco());
stmt.execute();
stmt.close();
conn.close();
}
/**
* Método que consulta por id o elemento inserido
*
* @return contatos
* @throws Exception
*/
public Contato consulta() throws SQLException {
PreparedStatement pstm = conn
.prepareStatement("SELECT * FROM CONTATOS WHERE ID=1");
ResultSet rs = pstm.executeQuery();
Contato contato = new Contato();
if (rs.next()) {
contato.setNome(rs.getString("nome"));
contato.setEndereco(rs.getString("endereco"));
contato.setEmail(rs.getString("email"));
rs.close();
pstm.close();
conn.close();
}
return contato;
}
/**
* Método que lista todos os elementos inseridos
*
* @return contatos
* @throws Exception
*/
public List<Contato> getLista() throws SQLException {
PreparedStatement pstm = this.conn
.prepareStatement("SELECT * FROM CONTATOS");
ResultSet rs = pstm.executeQuery();
List<Contato> contatos = new ArrayList<Contato>();
while (rs.next()) {
Contato contato = new Contato();
contato.setNome(rs.getString("nome"));
contato.setEndereco(rs.getString("endereco"));
contato.setEmail(rs.getString("email"));
contatos.add(contato);
}
rs.close();
pstm.close();
// conn.close();
return contatos;
}
/**
* Método que altera os dados de um contato específico
*
* @param contato
* @throws SQLException
*/
public void altera(Contato contato) throws SQLException {
PreparedStatement stmt = conn
.prepareStatement("update contatos set nome=?, email=?, endereco=?, where id=?");
stmt.setString(1, contato.getNome());
stmt.setString(2, contato.getEmail());
stmt.setString(3, contato.getEndereco());
stmt.setLong(4, contato.getId());
stmt.execute();
stmt.close();
}
/**
* Método que deleta os dados de um contato específico
*
* @param contato
* @throws SQLException
*/
public void deleta(Contato contato) throws SQLException {
PreparedStatement stmt = conn
.prepareStatement("delete from contatos where id=?");
stmt.setLong(1, contato.getId());
stmt.execute();
stmt.close();
}
}
no struts config está configurado:
<action-mappings>
<action path="/listaContatos" type="br.com.treinamento.struts.action.ListaContatosAction">
<forward name="listaContato" path="/lista.jsp" />
</action>
</action-mappings>
porque no browser ao invéz de aparecer a lista de meus contatos aparece:
${contato.id} - ${contato.nome}
como se eu só tivesse pedido pra imprimir essa linha ?!