Action nao executa!

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!!