A ideia é a seguinte, tenho uma tabela listando os clientes, com um campo atualizar. Quando clicado dobre ele, chama-se AtualizaClienteAction e passa o id do cliente. Depois, teria de ser redirecionado para a pagina atualizar_cliente.jsp para ele poder modificar os dados.
Vejam o codigo. Ta dando a seguinte exception:
exception
javax.servlet.ServletException
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:523)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause
java.lang.NullPointerException
br.com.marcelo.action.AtualizaClienteAction.execute(AtualizaClienteAction.java:21)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
AtualizarClienteForm
package br.com.marcelo.form;
import org.apache.struts.action.ActionForm;
public class AtualizaClienteForm extends ActionForm{
/**
*
*/
private static final long serialVersionUID = 7362111257516189451L;
private Long id;
private String nome, email, cidade;
public String getCidade() {
return cidade;
}
public void setCidade(String cidade) {
this.cidade = cidade;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}
AtualizarClienteAction
package br.com.marcelo.action;
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.marcelo.form.AtualizaClienteForm;
import br.com.marcelo.hibernate.DAO;
import br.com.marcelo.modelo.Cliente;
public class AtualizaClienteAction extends Action{
@Override
public ActionForward execute(ActionMapping map, ActionForm form, HttpServletRequest req, HttpServletResponse res) throws Exception {
AtualizaClienteForm c = (AtualizaClienteForm) form;
Long id = c.getId();
DAO<Cliente> dao = new DAO<Cliente>(Cliente.class);
Cliente cliente = dao.pesquisa(id);
req.setAttribute("cliente", cliente);
return map.findForward("ok");
}
}
Atualizar_cliente.jsp
<%@ taglib uri="/WEB-INF/tld/struts-html.tld" prefix="html"%>
<%@ taglib uri="/WEB-INF/tld/struts-bean.tld" prefix="bean"%>
<html:html>
<html:form action="/atualizarcliente" focus="nome">
nome <html:text property="nome" value="${cliente.nome}" size="20"/> <br>
email <html:text property="email" value="${cliente.email}" size="20"/><br>
cidade <html:text property="cidade" value="${cliente.cidade}" size="20"/><br>
<html:submit> atualizar </html:submit>
</html:form>
</html:html>
struts-config.xml
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
<form-beans>
<form-bean type="br.com.marcelo.form.AtualizaClienteForm" name="AtualizaClienteForm"/>
</form-beans>
<action-mappings>
<action path="/atualizarcliente" type="br.com.marcelo.action.AtualizaClienteAction" name="AtualizarClienteForm" >
<forward name="ok" path="/atualizar_cliente.jsp"/>
</action>
</action-mappings>
<message-resources parameter="MessageResources"/>
</struts-config>