You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Anant Sagar <an...@rapideffect.com> on 2002/03/06 13:32:25 UTC
Re: getting validation errors on initial display of a form
Since you are calling "names.do" directly, formbean calls validate() method before forwarding to appropriate action class and hence the erros are displayed.
Call your form using this http://localhost:8080/starrd/pages/app/Name.jsp initially
and set action="/app/names" while submitting.
Hope that may help .
Anant Sagar
----- Original Message -----
From: "Dick Starr" <di...@starrcs.com>
To: "struts-user" <st...@jakarta.apache.org>
Sent: Tuesday, January 22, 2002 8:50 AM
Subject: getting validation errors on initial display of a form
> I am new to Struts and am using Ted's sample logon app as my basis for
> learning. His part works fine. I added a new jsp page that contains two
> fields, created a form bean & an action form with validation edits. My
> problem is that when I execute my form via
> http://localhost:8080/starrd/app/names.do I get validation errors appearing
> immediately (before I enter any data in the form). I can't believe thats
> normal: I must be doing something wrong.
>
> Thanks in advance for the help.
>
> Dick Starr
>
> Here's the pertinent parts of my struts-config:
>
> <form-beans>
> <form-bean
> name="nameForm"
> type="com.starrcs.app.SANameForm"/>
>
> <global-forwards>
> <forward
> name="names"
> path="/app/names.do"/>
>
> <action-mappings>
> <action
> path="/app/names"
> type="com.starrcs.app.SANameAction"
> name="nameForm"
> scope="request"
> validate="true"
> input="/pages/app/Name.jsp">
> <forward
> name="continue"
> path="/pages/app/Name.jsp"/>
> </action>
>
> Here's my Name.jsp:
>
> <!-- Name.jsp 2002/01/21 RJS -->
> <%@ page language="java" %>
> <%@ taglib uri="/tags/struts-bean" prefix="bean" %>
> <%@ taglib uri="/tags/struts-html" prefix="html" %>
> <html><head><title><bean:message key="app.name.title"/></title></head>
> <html:base/>
> <body>
> <html:errors/>
> <html:form action="/app/names" focus="name">
> <table border="0" width="100%">
> <tr><th align="right">Name:</th><td align="left">
> <html:text property="name"/></td>
> </tr>
> <tr><th align="right">Address line one:</th><td align="left">
> <html:text property="addr1"/></td>
> <tr>
> <td align="right"><html:submit property="submit" value="Submit"/></td>
> <td align="left"><html:reset/></td>
> </tr>
> </table>
> </html:form>
> </body>
> </html>
>
> <%--
>
> Allow user to submit username and password to logon action.
>
> --%>
>
> Here's the pertinent parts of SANameAction.java:
>
> public final class SANameAction extends Action
> {
> public ActionForward perform(ActionMapping mapping,
> ActionForm form,
> HttpServletRequest request,
> HttpServletResponse response)
> throws IOException, ServletException
> {
> // Obtain fields from web tier
> String name = ((SANameForm) form).getName();
> String addr1 = ((SANameForm) form).getAddr1();
>
> // Log this event, if appropriate
> if (servlet.getDebug() >= SAConstants.DEBUG)
> {
> StringBuffer message =
> new StringBuffer("SANameAction: name = ");
> message.append(name);
> message.append(", addr1 = ");
> message.append(addr1);
> servlet.log(message.toString());
> }
>
> // Forward control to the welcome URI
> // specified in the configuration.
> return (mapping.findForward(SAConstants.WELCOME));
> }
>
> } // End SANameAction
>
> Here's the pertinent parts of SANameForm.java:
>
> public final class SANameForm extends ActionForm
> {
> // ---- Instance Variables
>
> private String name = null;
> private String addr1 = null;
>
> // ---- Properties
>
> public String getName()
> {
> return (this.name);
> }
>
> public void setName(String name)
> {
> this.name = name;
> }
>
> public String getAddr1()
> {
> return (this.addr1);
> }
>
> public void setAddr1(String addr1)
> {
> this.addr1 = addr1;
> }
>
> // ---- Public Methods
> public void reset(ActionMapping mapping,
> HttpServletRequest request)
> {
> setName(null);
> setAddr1(null);
> }
>
> public ActionErrors validate(ActionMapping mapping,
> HttpServletRequest request)
> {
> ActionErrors errors = new ActionErrors();
> if ((name == null) || (name.length() < 1))
> errors.add("name",
> new ActionError("app.error.name.required"));
> if ((addr1 == null) || (addr1.length() < 1))
> errors.add("addr1",
> new ActionError("app.error.addr1.required"));
> return errors;
> }
>
> } // End SANameForm
>
> When I first execute the form via http://localhost:8080/starrd/app/names.do
> I immediately (before entering any data or executing the submit button) I
> get validation errors displayed for name and addr1 and get the following in
> my log file:
>
> 2002-01-21 20:19:19 action: Processing a GET for /app/names
> 2002-01-21 20:19:19 action: Looking for ActionForm bean under attribute
> 'nameForm'
> 2002-01-21 20:19:19 action: Creating new ActionForm instance of class
> 'com.starrcs.app.SANameForm'
> 2002-01-21 20:19:19 action: Storing instance under attribute 'nameForm' in
> scope 'request'
> 2002-01-21 20:19:19 action: Populating bean properties from this request
> 2002-01-21 20:19:19 action: Validating input form properties
> 2002-01-21 20:19:19 action: Validation error(s), redirecting to:
> /pages/app/Name.jsp
>
> Then if I fill in the two fields with data, I do not get validation errors
> (which is correct). Then this is what is in my log:
>
> 2002-01-21 20:19:37 action: Processing a POST for /app/names
> 2002-01-21 20:19:37 action: Looking for ActionForm bean under attribute
> 'nameForm'
> 2002-01-21 20:19:37 action: Creating new ActionForm instance of class
> 'com.starrcs.app.SANameForm'
> 2002-01-21 20:19:37 action: Storing instance under attribute 'nameForm' in
> scope 'request'
> 2002-01-21 20:19:37 action: Populating bean properties from this request
> 2002-01-21 20:19:37 action: Validating input form properties
> 2002-01-21 20:19:37 action: No errors detected, accepting input
> 2002-01-21 20:19:37 action: Looking for Action instance for class
> com.starrcs.app.SANameAction
> 2002-01-21 20:19:37 action: SANameAction: name = data1, addr1 = data2
> 2002-01-21 20:19:37 action: Processing a POST for /app/welcome
> 2002-01-21 20:19:37 action: Looking for Action instance for class
> com.starrcs.app.SAContinueAction
>
>
>
> --
> To unsubscribe, e-mail: <ma...@jakarta.apache.org>
> For additional commands, e-mail: <ma...@jakarta.apache.org>