hello. I'm trying to register a user but what i'm testing is validations.
The
 problem i have is the password comparison. When i want to compare the 
two password fields everything gets messed-up (and it also calls an 
actionclass even though it's client side validation). Please see the 
screen shots i have added at the end of the letter. I think anything 
else is pretty clear from the screenshots.

Source code follows
RegisterLogUserAction-validation.xml
============================
    <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 
1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd";>

<validators>
    <field name="user.firstname">
        <field-validator type="requiredstring">
   
         <message>You must enter your first name.</message>
        </field-validator>
    </field>

    <field name="user.lastname">
        <field-validator type="requiredstring">
            <message>You must enter your last name.</message>
        </field-validator>
    </field>

    <field name="user.email">
        <field-validator type="requiredstring">
            <message>You cannot leave the email address field empty.</message>
        </field-validator>
       
 <field-validator type="email">
            <message>The email address you entered is not valid.</message>
        </field-validator>
    </field>

    <field name="pass">
        <field-validator type="requiredstring">
            <message>You must enter a password.</message>
        </field-validator>

        <field-validator type="stringlength">
            <param name="minLength">5</param>
            <message>Password must contain at least ${minLength} 
characters.</message>
   
     </field-validator>

    </field>

    <field name="passconfirm">
        <field-validator type="fieldexpression">
            <param name="expression">pass==passconfrim</param>
            <message>Password does not match.</message>
        </field-validator>
    </field>
</validators>

RegisterLogUserAction
=================
import org.apache.struts2.interceptor.validation.SkipValidation;

import net.translators.logic.User;

public class RegisterLogUserAction extends UsersAction {
    //Has a static HashMap of the users
    private static final long serialVersionUID =
 -6928389480267873645L;
    private String message;
    private User user;
    private String pass;
    private String passconfirm;
    public void validate(){
        setMessage("Has gone through validate()");
    }
    
    public String execute(){
        message+=". Has gone though execute().";
        return SUCCESS;
    }
    //@SkipValidation
    public String serverside(){
        message+=". Has gone though serverside().";
        return SUCCESS;
    }
    public String clientside(){
        message+=". Has gone though
 clientside().";
        return SUCCESS;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public String getMessage() {
        return message;
    }

    public void setUser(User user) {
        this.user = user;
    }

    public User getUser() {
        return user;
    }

    public void setPass(String pass) {
        this.pass = pass;
    }

    public String getPass() {
        return pass;
    }

    public
 void setPassconfirm(String passconfirm) {
        this.passconfirm = passconfirm;
    }

    public String getPassconfirm() {
        return passconfirm;
    }
}

UserAction
================
public class UsersAction extends ActionSupport {

    private static final long serialVersionUID = 7196692210557957242L;
    private static Map<String, User> users = new HashMap<String, User>();
    
    
    public String register(){

        return INPUT;
    }
    
}

index.jsp
============
<body>
<p> This is the default home page. Here you will see news feeds etc.</p>
<p>You can register (client side
 validation)</p>

<s:form action="register-user1" method="POST" validate="true" >
    <s:textfield key="user.firstname" />
    <s:textfield key="user.lastname" />
    <s:textfield key="user.email" />
    <s:password key="pass" />
    <s:password key="passconfirm" />
    <s:submit />
</s:form>

<p>You can register (server side validation)</p>
<s:form action="register-user2" method="POST" >
    <s:textfield key="user.firstname" />
    <s:textfield key="user.lastname" />
    <s:textfield key="user.email" />
    <s:password key="pass" />
    <s:password key="passconfirm" />
    <s:submit />
</s:form>
<!--
 .... -->
</body>

struts.xml
=================
    <action name="register-user1"
        class="net.translators.actions.users.RegisterLogUserAction" 
method="clientside">
        <result name="success">/tests/message.jsp</result>
        <result name="input">/index.jsp</result>
    </action>
    <action name="register-user2"
        class="net.translators.actions.users.RegisterLogUserAction" 
method="serverside">
        <result name="success">/tests/message.jsp</result>
        <result name="input">/index.jsp</result>
   
 </action>

IndexAction.properties
====================
user.firstname = First Name
user.lastname = Last Name
user.email = E-mail
pass = Password
passconfirm = Password confirmation

IndexAction.java
====================
public class IndexAction extends ActionSupport {

    public String execute(){
        
        return SUCCESS;
    }
}

Screenshots
http://dl.dropbox.com/u/13391208/Screenshot1.png
http://dl.dropbox.com/u/13391208/Screenshot2.png
http://dl.dropbox.com/u/13391208/Screenshot3.png

Reply via email to