Struts 2 Validation

Struts 2 Validation with Examples

In this article, I am going to discuss Struts 2 Validation with Examples. Please read our previous article where we discussed Struts 2 Email.

Struts 2 Validation Example

When a user enters data into a webpage, the data needs to be double-checked. This is because sometimes users may enter wrong information (by mistake or on purpose). This checking is supposed to happen in the webpage JavaScript. However, a second round of validation has to be performed in the application as well.

Step 1: Create a new maven project in Eclipse. We will use Maven to manage the dependencies of struts2. This way, we do not have to import JARs.

Struts 2 Validation Example

Remember to set the packaging to war. This is because we shall be deploying a web application.

Struts 2 Validation Example

Finally, click on the finish button to create the project. The following project directories need to be created:

Struts 2 Validation Example

Step 2: Initially, the pom.xml file should contain the following content:

Struts 2 Validation Example

Modify pom.xml to add the required dependencies and the build configuration:

<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
https://maven.apache.org/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>
  <groupId>com.dotnet</groupId>
  <artifactId>strutex</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  
  <dependencies>
   <dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-core</artifactId>
    <version>6.1.2.1</version>
   </dependency>
   
   <dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-convention-plugin</artifactId>
    <version>6.1.2.1</version>
   </dependency>
   
   <dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts-taglib</artifactId>
    <version>1.3.10</version>
   </dependency>
   
   <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.3</version>
   </dependency>
   
   <dependency>
     <groupId>taglibs</groupId>
     <artifactId>standard</artifactId>
     <version>1.1.2</version>
   </dependency>
   
   <dependency>
     <groupId>javax.servlet.jsp.jstl</groupId>
     <artifactId>jstl-api</artifactId>
     <version>1.2</version>
  </dependency>
  
  <dependency>
     <groupId>javax.servlet.jsp</groupId>
     <artifactId>javax.servlet.jsp-api</artifactId>
     <version>2.3.3</version>
     <scope>provided</scope>
 </dependency>

  </dependencies>
  
  <build>
   <plugins>
    <plugin>
     <groupId>org.apache.maven.plugins</groupId>
    	  <artifactId>maven-compiler-plugin</artifactId>
    	  <version>3.11.0</version>
    	  <configuration>
     <source>17</source>
     <target>17</target>
    </configuration>
    </plugin>
   </plugins>
  </build>
</project>

Step 3: In the src/main/webapp directory, create a new file called index.jsp. Add the following content to the file:

<%@ page language = "java"
contentType = "text/html; charset = ISO-8859-1"
pageEncoding = "ISO-8859-1"%>

<%@ taglib prefix = "s"
uri = "/struts-tags"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">

<html>
   <head>
   		<title>Student Form</title>
   </head>
   
   <body>
      <s:form action = "StudentInfo" method = "post">
         <s:textfield name = "name" label = "Name: " size = "20"/>
         <s:textfield name = "age" label = "Age: " size = "20"/>
         <s:submit name = "submit" label = "Submit" align = "center"/>
      </s:form>
   </body>
</html>

Step 4: In the src/main/webapp directory, create a new file called success.jsp. Add the following content to the file:

<%@ page contentType = "text/html; charset = UTF-8" %>
<%@ taglib prefix = "s" uri = "/struts-tags" %>

<html>
   <head>
      <title>Success</title>
   </head>
   
   <body>
 		Student information was saved successfully.
   </body>
</html>

Step 5: In the src/main/java directory, create a new file called StudentAction.java. The file contains the Java action code. This code should be executed when the “Show details” button is clicked. Add the following content to the file:

package com.dotnet;

import com.opensymphony.xwork2.ActionSupport;

public class StudentAction extends ActionSupport
{
 private String name;
 private int age;
 
 public String execute()
 {
  return SUCCESS;
 }

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public int getAge() {
  return age;
 }

 public void setAge(int age) {
  this.age = age;
 }

 public void validate()
 {
  if (name == null || name.trim().equalsIgnoreCase(""))
   addFieldError("name", "Name is required!");
  
  if (age < 3 || age > 25)
   addFieldError("age", "Age must be between 3 and 25");
 }
}

In this program, the execute function has absolutely no importance, as it returns “SUCCESS” every time. The validation takes place in the validate() function.

Step 6: In the src/main/resources directory, create a new file called struts.xml. The file is responsible for configuring struts2. Add the following content to the file:

<?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>
   <constant name = "struts.devMode" value = "true" />
   
   <package name = "helloworld" extends = "struts-default">
      <action name = "StudentAction" class = "com.dotnet.StudentAction" method = "execute">
         <result name = "input">/index.jsp</result>
         <result name = "success">/success.jsp</result>
      </action>
   </package>
</struts>

Note that there is no error.jsp file in this project. This is because we perform the required validation and fix the data before proceeding. In other words, there is no chance of an error (because we resolve the errors beforehand).

Step 7: In the src/main/webapp directory, create a new directory called WEB-INF. In this directory, create a new file called web.xml. This file is responsible for implementing struts2 in the web application. Add the following content into the file:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemalocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/web-app_3_0.xsd"
id="apache-struts-config-example"
version="3.0">

 <display-name>Struts Config XML</display-name>
 
 <welcome-file-list>
  <welcome-file>index.jsp</welcome-file>
 </welcome-file-list>
 
 <filter>
  <filter-name>struts2</filter-name>
  <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
 </filter>
 
 <filter-mapping>
  <filter-name>struts2</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>

</web-app>

Step 8: Compile and execute the program on the Tomcat server. The following page must open in your default web browser:

Struts 2 Validation Example

If you enter some wrong details, the following text will be shown:

Struts 2 Validation with Examples

Struts 2 Validation with Examples

Struts 2 Validation with Examples

Once you enter the proper details, the following webpage will be displayed:

Struts 2 Validation with Examples

Congratulations! You have successfully implemented validation in struts2.

In the next article, I am going to discuss Struts 2 Localization with Examples. Here, in this article, I try to explain Struts 2 Validation with Examples and I hope you enjoy this Struts 2 with Validation article.

Leave a Reply

Your email address will not be published. Required fields are marked *