Ola pessoal,
Eu criei uma pagina que cadastra clientes, e abaixo dele tem uma tabela representando a lista dos clientes cadastrados. Eu quero que ao executar a action ele ja chama o metodo para listar os clientes e joga na tabela da pagina JSP e com isso chamar os campos de formulario a tabela e os registros, caso foram cadastrados. Mas nao está preenchendo!
Como faço isso??
Seria melhor que ao chamar a action para invocar o JSP, ele chamar tbm outra action?
Como faço pra invocar o JSP de cadastro e alimentar a tabela de clientes na mesma pagina?
Obrigado.
quando vc clica em salvar ele vai para a própria página não é!?
tenta redirecionar para ela própria depois da gravação no banco…
Na verdade o que ele faz:
- Você clica no link da pagina;
- Ele abre a pagina;
- Ao abrir a pagina, mostra um formulario e uma tabela de registros;
- Voce pode cadastrar o cliente ou pode verificar na tabela de clientes os registros cadastrados;
Mas essa tabela nao está sendo preenchida. Esse é o erro.
Trecho para preencher a tabela de clientes:
<!-- Acima estao as colunas internacionalizadas -->
<c:forEach var="cliente" items="${clientes}">
<tr align="center">
<td><c:out value="${cliente.idCliente}"/></td>
<td><c:out value="${cliente.nomeCliente}"/></td>
<td><c:out value="${cliente.cnpj}"/></td>
<td><c:out value="${cliente.numContrato}"/></td>
<td><c:out value="${chamado.duracaoContrato}"/></td>
<td><c:out value="${chamado.slaAtendimento}"/></td>
</tr>
</c:forEach>
Action ClienteAction:
public class ClienteAction extends Action {
/**
* Mètodo formulario - Chama outra Action (ListaClienteAction) que
* alimenta a tabela de clientes e chama a pagina JSP para cadastro.
* @param mapping - Redireciona para a pagina pedida
* @param form - E usado para captura os valores dos campos
* @param request - Não e usado nesse método
* @param response - Não é usado nesse metodo
* @return ActionForward - Retorna a pagina solicitada
*/
public ActionForward formulario(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
ActionForward forward = null;
ClienteDAO clienteDAO = new ClienteDAO();
Collection clientes = null;
try {
clientes = clienteDAO.getCliente();
forward = mapping.findForward("cadCliente");
} catch (Exception e) {
request.setAttribute("err",e.getClass().getName()+ ":" + e.getMessage());
forward = mapping.findForward("ERRO");
}
request.setAttribute("clientes", clientes);
return forward;
} // fim do método formulario
} //fim da Action
E o método getCliente do ClienteDAO:
public class ClienteDAO {
private DAO dao = null;
PreparedStatement pst = null;
private String SQL;
/** Criando um objeto ClienteDAO */
public ClienteDAO() {
dao = DAO.getInstance();
}
/**
* Retorna todas os clientes cadastrados.
*
* @return - Lista de todas os clientes cadastrados.
* @throws DAOException -
* Caso ocorra algum erro ao buscar conex�o ou pesquisar a lista
* de clientes.
*/
public Collection<ClienteDTO> getCliente() throws DAOException {
Connection conn = dao.getConnection();
Collection<ClienteDTO> clientes = null;
try {
// Faz a consulta para puxar todos os registros
SQL = "SELECT codigoCliente,nome,cnpj,num_contrato,duracao_contrato,SLA_Atendimento FROM cliente";
clientes = new ArrayList<ClienteDTO>();
pst = conn.prepareStatement(SQL);
ResultSet rs = pst.executeQuery();
while(rs.next()){
ClienteDTO cliente = new ClienteDTO();
cliente.setIdCliente(rs.getInt("codigoCliente"));
cliente.setNomeCliente(rs.getString("nome"));
cliente.setCnpj(rs.getString("cnpj"));
cliente.setNumContrato(rs.getString("num_contrato"));
cliente.setDuracaoContrato(rs.getString("duracao_contrato"));
cliente.setSlaAtendimento(rs.getString("SLA_Atendimento"));
clientes.add(cliente);
System.out.println(clientes);
System.out.println("----------------------------------------------------\n");
}
rs.close(); //Fecha o resultset
} catch (Exception e) {
throw new DAOException(e.getMessage());
} finally {
/*
* Libera a conex�o de volta para o Pool.
*/
try {
conn.close();
} catch (SQLException e1) {
throw new DAOException(e1.getMessage());
}
}
return clientes;
} // fim do método getCliente()
} // fim da classe ClienteDAO
Talvez esses codigos faça entender mais ou menos o que quero.
VLW!!!
Não sei se estou falando besteira, mas eu tentei fazer isso que vcê fez e tive o mesmo problema, dai eu usei outra taglib e funcionou
[code]<%@ taglib uri=“http://java.sun.com/jstl/core_rt” prefix=“c-rt”%>
<c-rt:forEach var=“p” items="${pessoas}">
...
</c-rt:forEach>[/code]
O Codigo está certo. O unico problema que aconteceu é que tive que limpar o cache do Tomcat, e depois limpar o cache do navegador e do sistema e reiniciei.
Vai entender!!!
No Windows isso é direto, mas no Linux é dificil!!
Caso acontecer isso com vcs, tenta isso
VLW Pessoal!!