Hi,
Iam doing client side validations. Let me explain the problem. All field
are <html:text> & using struts 1.1
case 1:
Name : 3456
Password : abc
Email : def
In case1, if i click the submit button with the respective values, iam
getting alert msg "enter only characters for name" & "enter only numbers for
password" BUT its not displaying alert msg "Please enter a valid Email
address".
Suppose if i enter proper values for name & password field then it will
display alert msg "Please enter a valid Email address".
As in case i all the 3 values are invalid so it should show all the 3
alert msgs in one alert.
Only for name field iam checking that it should contain characters with
min. length=5 & max. length=6. For password field iam checking it should
contain only numbers. For email field iam checking to have a proper email
id. ALL field are required.
messageresources.properties:
---------------------------------------------
ComposeForm.OnlyNumbers =enter only numbers for password
ComposeForm.OnlyChars = enter only characters for fname
ComposeForm.InvalidEmail = Please enter a valid Email address.
ComposeForm.fname.minlength = First Name cannot be less than {1}
characters.
ComposeForm.fname.maxlength = First Name cannot be greater than {2}
characters.
validation.xml
---------------------
<!-- compose form Validation-->
<form name="InfoForm">
<field property="fname" depends="required, mask, minlength,
maxlength">
<arg key="ComposeForm.fname" position="0"/>
<msg name="mask" key="ComposeForm.OnlyChars"/>
<var>
<var-name>mask</var-name>
<var-value>^[a-zA-Z]*$</var-value>
</var>
<msg name="minlength" key="ComposeForm.fname.minlength"/>
<arg name="minlength" key="${var:minlength}" resource="false"
position="1"/>
<var>
<var-name>minlength</var-name>
<var-value>5</var-value>
</var>
<msg name="maxlength" key="ComposeForm.fname.maxlength"/>
<arg name="maxlength" key="${var:maxlength}" resource="false"
position="2"/>
<var>
<var-name>maxlength</var-name>
<var-value>6</var-value>
</var>
</field>
<field property="password" depends="required, mask">
<arg key="ComposeForm.password" position="0"/>
<msg name="mask" key="ComposeForm.OnlyNumbers"/>
<var>
<var-name>mask</var-name>
<var-value>^[0-9]*$</var-value>
</var>
</field>
<field property="emailaddress" depends="required, email">
<arg key="ComposeForm.email" position="0"/>
<msg name="email" key="ComposeForm.InvalidEmail"/>
</field>
</form>
Struts-config.xml
--------------------------
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml
,/WEB-INF/validation.xml"/>
<set-property property="stopOnFirstError" value="true"/>
</plug-in>
JSP
------
<html:form action = "/some" method= "post" onsubmit="return
validateInfoForm(this);">
<table>
<tr><td>Name : </td><td> <html:text property="fname"
/></td><td><!--<html:errors property="fname"/>--></td></tr>
<tr><td> Password : </td><td><html:text property="password" />
</td><td></td></tr>
<tr><td> Email : </td><td><html:text property="emailaddress"/></td>
<td></td></tr>
<tr><td colspan="3"> <html:submit/></td></tr>
</table>
<!-- Begin Validator Javascript Function-->
<html:javascript formName="InfoForm" staticJavascript="true"/>
<!-- End of Validator Javascript Function-->
</html:form>
Regards
Rauf Khan
On 8/1/06, Adam Gordon <[EMAIL PROTECTED]> wrote:
Rauf-
Are you doing client or server-side validation? Or both?
W.R.T your multiple errors, there is an attribute you can set in your
struts XML file, namely:
| <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames"
value="/WEB-INF/validator-rules.xml
,/WEB-INF/validations.xml"/>
<set-property property="stopOnFirstError"
value="true"/>
</plug-in>|
Note that you must be using Struts >= 1.2.0 for this feature, though I
believe prior to 1.2.0, the behavior was to always stop on the first
error.
I'm a little confused by your explanation but it sounds like you're
possibly missing the XML in your JSP for the email field since you say
it doesn't show up - the other rationale is that it's a valid email
address.
Also, just an FYI, your password field does not have a max/min length
validation.
-Adam
Rauf Khan wrote:
> Hi,
>
> I am trying to validate a simple form which has a name, password &
> email field. I have validated that name field(html:text) should
> contain only characters, password field(html:text) contains only
> numbers & email field(html:text) should contain proper email id.
>
> When i enter only numbers in name field, only characters in password
> field & an invalid email id then only alert msg "please enter only
> characters"
> is coming for name field & msg "pls enter only numbers for password
> field' *BUT* no msg is coming for email field even though i have
> entered a wrong email id. Also those two msgs are coming
> simultaneously but i want like this, i mean to say when i click on
> submit button first only msg for name field should show. Then again if
> i click submit button then msg for password field should show & so on.
>
> Also suppose if i enter the proper name (only characs) , proper
> password (only numbers) & if i enter the invalid email id then it will
> show the
> msg" please enter a valid email address".
>
> I am sending the following code for reference :
>
> Validation.xml
> ---------------------
> <!-- compose form Validation-->
> <form name="InfoForm">
> <field property="fname"
> depends="required,mask,minlength,maxlength">
> <arg key="ComposeForm.fname" position="0"/>
> <msg name="mask" key="ComposeForm.OnlyChars"/>
> <var>
> <var-name>mask</var-name>
> <var-value>^[a-zA-Z]*$</var-value>
> </var>
> <msg name="minlength" key="ComposeForm.fname.minlength"/>
> <arg name="minlength" key="${var:minlength}" resource="false"
> position="1"/>
> <var>
> <var-name>minlength</var-name>
> <var-value>5</var-value>
> </var>
> <msg name="maxlength" key="ComposeForm.fname.maxlength"/>
> <arg name="maxlength" key="${var:maxlength}" resource="false"
> position="2"/>
> <var>
> <var-name>maxlength</var-name>
> <var-value>6</var-value>
> </var>
> </field>
> <field property="password" depends="required,mask">
> <arg key="ComposeForm.password" position="0"/>
> <msg name="mask" key="ComposeForm.OnlyNumbers"/>
> <var>
> <var-name>mask</var-name>
> <var-value>^[0-9]*$</var-value>
> </var>
> </field>
> <field property="email" depends="required,email">
> <arg key="ComposeForm.email" position="0"/>
> <msg name="email" key="ComposeForm.InvalidEmail"
> position="0"/>
> </field>
> </form>
>
>
> MessageResources.properties:
> --------------------------------------------------
> #- validations for compose.jsp --
> ComposeForm.fname = Please enter the Name.
> ComposeForm.password = Please enter the Password.
> ComposeForm.email = Please enter the Email.
> ComposeForm.OnlyNumbers = Please enter only numbers
> ComposeForm.OnlyChars = Please enter only characters
> ComposeForm.InvalidEmail = Please enter a valid Email address.
> ComposeForm.OnlyNumbersChars = Please enter only numbers & characters
> ComposeForm.fname.minlength = First Name cannot be less than {1}
> characters.
> ComposeForm.fname.maxlength = First Name cannot be greater than {2}
> characters.
>
>
> Thanks in advance.
>
> Regards
> Rauf Khan
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]