Estou desenvolvendo uma aplicação simples com struts e estou com alguns problemas.
Queria que quando realizar o validate no ActionForm retornasse o erro para a jsp que chamou e apresentando o erro. Só que nao estou conseguindo fazer.
Uma outra coisa, nao estou conseguindo exibir nenhuma chave no jsp (Exception).
Segue os codigos.
CadastrarCliente JSP
<%@ taglib uri="/tags/struts-logic" prefix="logic" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<html:html>
<head>
<title>bakakba</title>
<html:base/>
</head>
<body>
<html:form action="cadastrarCliente.do">
Nome:<html:text property="nome" size="25" /><html:errors property="nome"/><br>
CPF:<html:text property="cpf" size="25"/><html:errors property="cpf"/><br>
<html:submit>Enviar</html:submit>
<html:reset>Reset</html:reset>
<html:errors property="errnome" />
<html:errors property="errcpf" />
<bean:message key="error.nome"/>
</html:form>
</body>
</html:html>
CadastrarCliente ActionForm
[code]package struts;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.DynaActionForm;
import org.apache.struts.validator.DynaValidatorActionForm;
import org.apache.struts.validator.DynaValidatorForm;
public class CadastrarClienteForm extends ActionForm {
private String nome;
private String cpf;
public ActionErrors validate(ActionMapping map, HttpServletRequest req) {
ActionErrors erros = new ActionErrors();
if ((cpf == null) || ((cpf.length() < 1)) ){
erros.add("errcpf", new ActionMessage("error.cpf"));
}
if ((nome == null) || (nome.length() < 1)) {
erros.add("errnome", new ActionMessage("error.nome"));
}
return erros;
}
public void reset(ActionMapping map, HttpServletRequest req) {
nome = "";
cpf = "";
}
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
[/code]
CadastrarCliente Action
[code]package struts;
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 persistencia.bean.ClienteTO;
import persistencia.dao.ClienteDAO;
public class CadastrarClienteAction extends Action {
public ActionForward execute(ActionMapping map, ActionForm form, HttpServletRequest req, HttpServletResponse res) {
ClienteTO bean = new ClienteTO();
CadastrarClienteForm formcliente = (CadastrarClienteForm)form;
bean.setCpf(formcliente.getCpf());
bean.setNome(formcliente.getNome());
ClienteDAO dao = new ClienteDAO();
if (dao.save(bean)) {
return map.findForward("sucesso");
} else {
return map.findForward("falhou");
}
}
}
[/code]
Application Resources
errors.header=<UL>
errors.prefix=<LI>
errors.suffix=</LI>
errors.footer=</UL>
errors.invalid={0} is invalid.
errors.maxlength={0} can not be greater than {1} characters.
errors.minlength={0} can not be less than {1} characters.
errors.range={0} is not in the range {1} through {2}.
errors.required={0} is required.
errors.byte={0} must be an byte.
errors.date={0} is not a date.
errors.double={0} must be an double.
errors.float={0} must be an float.
errors.integer={0} must be an integer.
errors.long={0} must be an long.
errors.short={0} must be an short.
errors.creditcard={0} is not a valid credit card number.
errors.email={0} is an invalid e-mail address.
errors.cancel=Operation cancelled.
errors.detail={0}
errors.general=The process did not complete. Details should follow.
errors.token=Request could not be completed. Operation is not in sequence.
welcome.title=Struts Application
welcome.heading=Struts Applications in Netbeans!
welcome.message=It's easy to create Struts applications with NetBeans.
error.cpf=CPF incorreto
error.nome=Nome incorreto
struts-config
[code]<?xml version="1.0" encoding="ISO-8859-1" ?>
<form-beans>
<form-bean name="cadastrarClienteForm" type="struts.CadastrarClienteForm" />
</form-beans>
<action-mappings>
<action path="/cadastrarCliente"
type="struts.CadastrarClienteAction"
name="cadastrarClienteForm"
validate="true"
scope="session"
input="/pages/CadastrarCliente.jsp" >
<forward name="sucesso" path="/pages/sucesso.jsp" />"
<forward name="falhou" path="/pages/erro.jsp" />
</action>
<action path="/welcome" forward="/pages/CadastrarCliente.jsp"/>
</action-mappings>
<message-resources parameter="ApplicationResources"/>
[/code]
Exception - ERRO
[code]javax.servlet.ServletException: Exception in JSP: /pages/CadastrarCliente.jsp:19
16: html:resetReset</html:reset>
17: <html:errors property=“errnome” />
18: <html:errors property=“errcpf” />
19: <bean:message key=“error.nome”/>
20: </html:form>
21:
22:
Stacktrace:
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1858)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:446)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause
org.apache.jasper.JasperException: Exception in JSP: /pages/CadastrarCliente.jsp:19
16: html:resetReset</html:reset>
17: <html:errors property=“errnome” />
18: <html:errors property=“errcpf” />
19: <bean:message key=“error.nome”/>
20: </html:form>
21:
22:
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:506)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.struts.chain.commands.servlet.PerformForward.handleAsForward(PerformForward.java:99)
org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:82)
org.apache.struts.chain.commands.AbstractPerformForward.execute(AbstractPerformForward.java:51)
org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:48)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:280)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1858)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:446)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause
javax.servlet.ServletException: Missing message for key “error.nome” in bundle “(default bundle)” for locale pt_BR
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:843)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:776)
org.apache.jsp.pages.CadastrarCliente_jsp._jspService(CadastrarCliente_jsp.java:91)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.struts.chain.commands.servlet.PerformForward.handleAsForward(PerformForward.java:99)
org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:82)
org.apache.struts.chain.commands.AbstractPerformForward.execute(AbstractPerformForward.java:51)
org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:48)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:280)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1858)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:446)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause
javax.servlet.jsp.JspException: Missing message for key “error.nome” in bundle “(default bundle)” for locale pt_BR
org.apache.struts.taglib.bean.MessageTag.doStartTag(MessageTag.java:230)
org.apache.jsp.pages.CadastrarCliente_jsp._jspx_meth_bean_message_0(CadastrarCliente_jsp.java:400)
org.apache.jsp.pages.CadastrarCliente_jsp._jspx_meth_html_form_0(CadastrarCliente_jsp.java:198)
org.apache.jsp.pages.CadastrarCliente_jsp._jspx_meth_html_html_0(CadastrarCliente_jsp.java:119)
org.apache.jsp.pages.CadastrarCliente_jsp._jspService(CadastrarCliente_jsp.java:84)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.struts.chain.commands.servlet.PerformForward.handleAsForward(PerformForward.java:99)
org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:82)
org.apache.struts.chain.commands.AbstractPerformForward.execute(AbstractPerformForward.java:51)
org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:48)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:280)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1858)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:446)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
[/code]