Advertisement
Home > Struts Struts 2 Example Tutorial > Struts2 Validation Expression > Struts2 REGEX ExamplePlease log in to add or reply to any matter<- requires login or
RMI Example

Home > Struts Struts 2 Example Tutorial > Struts2 Validation Expression > Struts2 REGEX Example
Struts Tutorials:
Struts2 Tag CheckBoxList
, Checkbox, Iterator, IF
Struts2 Tag Library Example Struts2 Tiles Example Struts2 Tiles I18N Example Struts2 Questions Struts Tiles I18N Example Struts Eclipse MVC Struts2 Tags Struts2 Example and Tutorial Struts MVC Struts2 Validation
Hibernate Tutorials: Hibernate Case Study Class Hierarchy Persist Example Using Hibernate Interceptor Hibernate Questions with Answer Hibernate Many-to-Many Mapping Example Hibernate one-to-many Mapping Example Hibernate and ORM tools Spring Hibernate Example Hibernate SessionFactory Example Hibernate Mapping Class Hierarchy Hibernate Questions Hibernate SessionFactory Questions Spring Hibernate Example: Spring Hibernate Case Study

Written By : guddu
Title :
Struts Eclipse MVC
Description : Step by step demonstration
More...


Written By : Girish
Title :
Struts Tiles I18N Example
Description : Code with Sample Action
More...


Written By : ISHTEK
Title :
Struts2 questions
Description : open for discussion
More...


Written By : ISHTEK
Title :
Struts2 Tiles Example
Description : with Code and article
More...


Written By : ISHTEK
Title :
Struts2 Tiles I18N Example
Description : with code explained article
More...


Written By : Amit
Title :
Struts2 Tag Library Example
Description : Tutorial
More...


Written By : Amit
Title :
Struts2 Tags Example
Description : Code and Tutorial
More...


Written By : Amit
Title :
Radio Tag Example
Description : Step By Step Code
More...

Struts 2 Validation, Struts2, Expression, Regex, Expression
Author : Amit
Date (Year/Month/Date): 2009-11-21 Struts2 Validation exmaple with regex expressions
In this writing I shall be showing an example to demonstrate how to
use validator for regex expressions using Struts 2 Framework and

I am going to use an already used example from this site, 
this example has a Bean as ExamplePOJOAction Java class file.

With validation for expression, I am going to use REGEX expression
along with the in-built validator from Struts 2 and supporting JAR files.

The ExamplePOJOAction has a private variable of type MyBean, and
named as "myBean", this is MyBean with a stdClass of type String.

So the field name that is to be used in the ..-validation.xml configuration
file is "myBean.stdClass".

In this example we have a validation XML file as <bean_name>-validation
XML file.

As the Bean Action name is "ExamplePOJOAction", so the validation 
XML configuration file is "ExamplePOJOAction-validation.xml", as shown below:

ExamplePOJOAction-validation.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE validators PUBLIC
        "-//OpenSymphony Group//XWork Validator 1.0.3//EN"
        "http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd">
<validators>
  <field name="myBean.stdClass">
    <field-validator type="regex">
      <param name="expression">^[IVX]*$</param>
      <message>Please enter value using I, V, X only</message>      
    </field-validator>
  </field>
</validators>
Here in this example we are concerned about two Java class files, one is the POJO Action class, and another one is a POJO Bean class. In this example Action class is not really a POJO, as it extends ActionSupport from xwork-2.1.2.jar. One question came to my thought is why is this Action class extending ActionSupport, answer is that without this Base ActionSupport class our Action class won't be able to participate in validation that is defined in validation XML file. Here is the Action class for this example: ExamplePOJOAction.java
package sample;
/**
 * This code is provided "AS IS" without any guaranty
 * Use of this code only for educational and learning
 * purpose only.
 * Author: Amit
 * Contact : http://www.interview-questions-tips-forum.net
 * Date: 16-Feb-2009
 */
import java.util.Map;
import com.opensymphony.xwork2.ActionSupport;

/**
 * This is the Action POJO class
 */
public class ExamplePOJOAction extends ActionSupport {
    private MyBean myBean;
    public String preview() throws Exception {
        return "preview";
    }
    public void setMyBean(MyBean argMyBean) {
        myBean = argMyBean;
    }
    public MyBean getMyBean() {
        return myBean;
    }
}
Advertisement
And the supporting value object MyBean is shown as below: MyBean.java
package sample;
import java.util.List;
import java.util.ArrayList;

public class MyBean
{
    private String userName;
    private String roll;
    private String email;
    private String section;
    private String stdClass;
    private List subscriptionOptions;
    private List consentOptions;
    private boolean newsLetterOption;

    public String getUserName() {
        return this.userName;
    }
    public void setUserName(String argUserName) {
        userName = argUserName;
    }
    public String getRoll() {
        return this.roll;
    }
    public void setRoll(String argRoll) {
        roll = argRoll;
    }
    public String getEmail() {
        return this.email;
    }
    public void setEmail(String argEmail) {
        email = argEmail;
    }
    public String getSection() {
        return this.section;
    }
    public void setSection(String argSection) {
        section = argSection;
    }
    public String getStdClass() {
        return this.stdClass;
    }
    public void setStdClass(String argStdClass) {
        stdClass = argStdClass;
    }
    public List getSubscriptionOptions() {
        return subscriptionOptions;
    }
    public void setSubscriptionOptions(List argSubscriptionOptions) {
        subscriptionOptions = argSubscriptionOptions;
    }
    public void setNewsLetterOption(boolean argNewsLetterOption) {
        newsLetterOption = argNewsLetterOption;
    }
    public boolean getNewsLetterOption() {
        return newsLetterOption;
    }
    public void setConsentOptions(List argConsentOptions) {
        consentOptions = argConsentOptions;
    }
    public List getConsentOptions() {
        return consentOptions;
    }
}
In order to understand how these beans are defined in the struts.xml configuration file, as shown below: struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <package name="hibernate-example" namespace="/sample"
                 extends="struts-default">
        <action name="example" class="sample.ExamplePOJOAction" 
                               method="preview">
                <result name="preview">/preview.jsp</result>
                <result name="input">/index.jsp</result>
        </action>
    </package>
</struts>
So we have two JSPs for showing UI for this example. index.jsp file is the main JSP file that is called when browser is requesting for the default main screen, and on click of the submit button, validation for the action ExamplePOJOAction will be invoked. Appropriate error message will be shown on screen with the message from the validation XML file. Once the correct value for the STD/class text field is entered, for this example it is any word using I, V or X letters only, the preview screen will be called. Some of the other files require to run this example as follows:
Advertisement
index.jsp
<%@ taglib uri="/struts-tags" prefix="struts2"%>
<html>
<head>
<link rel="stylesheet" type="text/css" href="sample.css" />
</head>
<body>
<struts2:actionerror cssClass="ss"/>
<struts2:bean id="so" name="sample.SubscriptionOptions"/>
<struts2:bean id="consentOption" name="sample.ConsentOptions"/>
<struts2:form method="post" action="example" namespace="/sample">
<table>
<tr><td><struts2:textfield key="myBean.userName" label="Name "/></td></tr>
<tr><struts2:textfield key="myBean.roll" label="Roll "/></td></tr>
<tr><struts2:textfield key="myBean.email" label="Email "/></td></tr>
<tr><td><struts2:textfield key="myBean.section" label="Section "/></td></tr>
<tr><struts2:textfield key="myBean.stdClass" label="Std/Class "/></td></tr>
<struts2:checkbox key="myBean.newsLetterOption" label="Subscription for News Letters "/>
<struts2:checkboxlist label="Other Subscription Options " key="myBean.subscriptionOptions" list="so" labelSeparator=":"/>
<struts2:radio label="You opinion " key="myBean.consentOptions" list="consentOption" labelSeparator=":"/>
<tr><td colspan="2"><struts2:submit value="Register"/></td></tr>
</table>
</struts2:form>
</body>
</html>
preview.jsp
<%@ taglib uri="/struts-tags" prefix="struts2"%>
<html>
<head></head>
<body>
<h2>Preview Page</h2>
<table>
<tr><td>
<b><font color="green">Name : </font>
</td><td><struts2:property value="myBean.userName"/></td></tr>
<tr><td><b><font color="green">Roll No. : </font></b></td><td>
<struts2:property value="myBean.roll"/></td></tr>
<tr><td><b><font color="green">Email : </font></b></td><td>
<struts2:property value="myBean.email"/></td></tr>
<tr><td><b><font color="green">Section : </font>
</b></td><td><struts2:property value="myBean.section"/></td></tr>
<tr><td><b><font color="green">Std/Class : </font>
</b></td><td><struts2:property value="myBean.stdClass"/></td></tr>
<tr><td>
<b><font color="green">New Letter Subscription :</font></b></td><td>
<struts2:if test="myBean.newsLetterOption">
Yes
</struts2:if>
<struts2:else>
No
</struts2:else>
</td></tr>
<tr><td valign="top"><b><font color="green">Other Subscription Options:</font></b></td><td>
<struts2:iterator id="a" value="myBean.subscriptionOptions">
<struts2:property value="a"/>
<br>
</struts2:iterator>
</td></tr>

<tr><td valign="top"><b><font color="green">User consent Option selected :</font></b></td><td>
<struts2:iterator id="b" value="myBean.consentOptions">
<struts2:property value="b"/>
<br>
</struts2:iterator>
</td></tr>

</table>
</body>
</html>
Some of the user defined values for showing subscription options and consent options on screen are SubscriptionOptions.java
package sample;
import java.util.ArrayList;

public class SubscriptionOptions extends ArrayList
{
        public SubscriptionOptions() {
          super();
          add("Technical Support");
          add("Business Support");
          add("HR Support");
          add("Help Desk Emails");
        }
}
ConsentOptions.java
package sample;
import java.util.ArrayList;

public class ConsentOptions extends ArrayList
{
	public ConsentOptions() {
          super();
          add("Agree");
          add("Disagree");
	}
}
And the Web application descriptor XML file for this example is: web.xml
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
    <display-name>Struts Blank</display-name>
  <filter>
  <filter-name>sample-filter</filter-name>
  <filter-class> 
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
  </filter-class>
  </filter>
  <filter-mapping>
    <filter-name>sample-filter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>
List of JAR file with version those are used in this example as follows:
  • struts2-core-2.1.6.jar
  • xwork-2.1.2.jar
  • ognl-2.6.11.jar
  • freemarker-2.3.13.jar
  • commons-logging-1.1.jar
  • commons-io-1.3.2.jar
  • commons-fileupload-1.2.1.jar
  • Eclise 3.2 is used as IDE and Apache Jakarta Tomcat 5.5.9 as web server.

    Commented By ->
    Steve
    Hi Amit,
    
    Is it possible to define the Regex expression at runtime?
    I mean as you have mentioned in this example to use hard coded Regex expression
    in the validation descriptor file, but i want to do in such a way so as to be able to 
    pass this regex expression from the action class at runtime.By doing this i should
    be able to do the validation dynamically from Action POJO/Bean.
    
    Appreciate any help in this thought of mine.
    
    Thanks,
    Steve

    Commented By ->
    Guddu
    Can you please show me an example using Client or Browser side JavaScript validation using Struts 2 ?
    
    Thanks in advance
    Please write your Comment on this Matter
    (This will be visible if found suitable):
    Name: *
    Email (will not be displayed): *
    Matter: *
    32,20
    Enter bigger number from above :*
    Home > Struts Struts 2 Example Tutorial > Struts2 Validation Expression > Struts2 REGEX Example
    Visitor/User submitted related resources:
    (Visible upon review and approved by this site Administrator)
    
    Referred By Name *:
    Resource URL *: (e.g, URL should be starting with http://www.-----.---)
     
    Resource Short Description *:
    18,25
    Enter bigger number from above : *

    Please log in to add or reply to any matter<- requires login
    Log in or Register
    This List is generated as on 2009-07-12 (YYYY-MM-DD)
    #Discuss-these : questions-and-answer : Interview-Questions-on-Java #Some-facts-about-MVC-Framework-and-Struts : MVC-Struts : Struts-Struts-2-Example-Tutorial #My-First-example-using-Apache-Struts2 : Struts2-example-tutorial : Struts-Struts-2-Example-Tutorial This article discusses steps of creating a Struts2 based example web application With lots of easy to understand explaination and source code for reference. #Tags-such-as-IF-Iterator-Tags : Struts2 : Struts-Struts-2-Example-Tutorial #Step-by-step-demonstration : Struts-Eclipse-MVC : Struts-Struts-2-Example-Tutorial #Code-with-Sample-Action : Struts-Tiles-I18N-Example : Struts-Struts-2-Example-Tutorial #open-for-discussion : Struts2-questions : Struts-Struts-2-Example-Tutorial #with-Code-and-article : Struts2-Tiles-Example : Struts-Struts-2-Example-Tutorial #with-code-explained-article : Struts2-Tiles-I18N-Example : Struts-Struts-2-Example-Tutorial #Tutorial : Struts2-Tag-Library-Example : Struts-Struts-2-Example-Tutorial #Code-and-Tutorial : Struts2-Tags-Example : Struts-Struts-2-Example-Tutorial #Step-By-Step-Code : Radio-Tag-Example : Struts-Struts-2-Example-Tutorial #Struts-2-Code : Struts2-Validation-Example : Struts-Struts-2-Example-Tutorial #Struts-2-Example-with-Code : Struts2-HibernateSession-Plugin : Struts-Struts-2-Example-Tutorial
    Copyright © 2008-2009, Interview-Questions-Tips-Forum, All Rights Reserved.
    CONTACT    PRIVACY POLICY    DISCLAIMER
    
    This web site provides some of the information about various technologies, example 
    code, tips, tutorials etc. Like any printed matterials, content of these pages may 
    become out of date over a period of time. Therefore all visitor/users of this web 
    site are requested/advised to refer to the originating parties/sources for the 
    latest changes and happenings for detailed information. This information is not 
    intended to be a substitute for the original reference provided by the originating 
    parties/sources.