diff --git a/struts2examples/exclude_parameters/README.txt b/struts2examples/exclude_parameters/README.txt
new file mode 100644
index 0000000..a026815
--- /dev/null
+++ b/struts2examples/exclude_parameters/README.txt
@@ -0,0 +1,19 @@
+This is the example project referred to in the
+Struts 2 documentation, Exclude Params tutorial.
+See:  http://struts.apache.org.
+
+To build the application's war file run mvn clean package
+from the project's root folder.
+
+The war file is created in the target sub-folder.
+
+Copy the war file to your Servlet container (e.g. Tomcat, GlassFish) and 
+then startup the Servlet container.
+
+In a web browser go to:  http://localhost:8080/exclude_parameters/index.action.
+
+You should see a web page with Welcome to Struts 2!
+
+The application writes log messages to the console.  In Tomcat the 
+log messages can be found in catalina.out ([tomcat home]/logs).
+
diff --git a/struts2examples/exclude_parameters/pom.xml b/struts2examples/exclude_parameters/pom.xml
new file mode 100644
index 0000000..3d7ea88
--- /dev/null
+++ b/struts2examples/exclude_parameters/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>struts.apache.org</groupId>
+    <artifactId>struts2examples</artifactId>
+    <version>1.0.0</version>
+  </parent>
+
+  <artifactId>exclude_parameters</artifactId>
+
+  <name>exclude_parameters</name>
+  
+     <description>Struts 2 example application for the
+  exclude parameters getting started tutorial</description>
+
+  <packaging>war</packaging>
+  
+  	<build>
+		<finalName>exclude_parameters</finalName>
+	</build>
+	
+</project>
diff --git a/struts2examples/exclude_parameters/src/main/java/org/apache/struts/edit/action/EditAction.java b/struts2examples/exclude_parameters/src/main/java/org/apache/struts/edit/action/EditAction.java
new file mode 100644
index 0000000..a576a9d
--- /dev/null
+++ b/struts2examples/exclude_parameters/src/main/java/org/apache/struts/edit/action/EditAction.java
@@ -0,0 +1,133 @@
+package org.apache.struts.edit.action;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.apache.struts.edit.model.Person;
+import org.apache.struts.edit.model.State;
+import org.apache.struts.edit.service.CarModelsService;
+import org.apache.struts.edit.service.CarModelsServiceHardCoded;
+import org.apache.struts.edit.service.EditService;
+import org.apache.struts.edit.service.EditServiceInMemory;
+
+import com.opensymphony.xwork2.ActionSupport;
+import com.opensymphony.xwork2.Preparable;
+
+/**
+ * Acts as a controller to handle actions
+ * related to editing a Person.
+ * @author bruce phillips
+ *
+ */
+public class EditAction extends ActionSupport implements Preparable {
+	
+	private static Logger log = Logger.getLogger( EditAction.class.getName() );
+	
+	private static final long serialVersionUID = 1L;
+	
+	private EditService editService = new EditServiceInMemory();
+	
+	private CarModelsService carModelsService = new CarModelsServiceHardCoded() ;
+	
+	private Person personBean;
+	
+	private String [] sports = {"football", "baseball", "basketball" };
+	
+	private String [] genders = {"male", "female", "not sure" };
+	
+	private List<State> states ;
+
+	private String [] carModelsAvailable ;
+	
+	
+
+	@Override
+	public void prepare() throws Exception {
+		
+		log.info("In prepare method...");
+		
+		carModelsAvailable = carModelsService.getCarModels() ;
+		
+		setPersonBean( editService.getPerson() );
+
+	}
+
+	public void prepareExecute() {
+		
+		log.info("In prepareExecute method...");
+		
+		
+	}
+	
+	public String execute() throws Exception {
+		
+		log.info ("In execute method...");
+		
+	    editService.savePerson( getPersonBean() );
+		
+		return SUCCESS;
+		
+	}
+	
+	public void prepareInput() {
+		
+		log.info("In prepareInput method...");
+		
+	}
+	
+	public String input() throws Exception {
+		
+		log.info("In input method...");
+		
+		
+		return INPUT;
+	}
+	
+	public Person getPersonBean() {
+		
+		
+		return personBean;
+		
+	}
+	
+	public void setPersonBean(Person person) {
+		
+		personBean = person;
+		
+	}
+
+
+	public List<String> getSports() {
+		return Arrays.asList(sports);
+	}
+	
+	public List<String> getGenders() {
+		
+		return Arrays.asList(genders);
+		
+	}
+
+
+
+	public List<State> getStates() {
+		
+		states = new ArrayList<State>();
+		states.add( new State("AZ", "Arizona") );
+		states.add( new State("CA", "California") );
+		states.add( new State("FL", "Florida") );
+		states.add( new State("KS", "Kansas") );
+		states.add( new State("NY", "New York") );
+		
+		return states;
+	}
+
+
+
+	public String [] getCarModelsAvailable() {
+		return carModelsAvailable;
+	}
+
+
+}
diff --git a/struts2examples/exclude_parameters/src/main/java/org/apache/struts/edit/model/Person.java b/struts2examples/exclude_parameters/src/main/java/org/apache/struts/edit/model/Person.java
new file mode 100644
index 0000000..2d127eb
--- /dev/null
+++ b/struts2examples/exclude_parameters/src/main/java/org/apache/struts/edit/model/Person.java
@@ -0,0 +1,121 @@
+package org.apache.struts.edit.model;
+
+import java.util.Arrays;
+
+
+
+/**
+ * Models a Person who registers.
+ * @author bruce phillips
+ *
+ */
+public class Person
+{
+    private String firstName;
+    private String lastName;
+    private String sport;
+    private String gender;
+    private String residency;
+    private boolean over21;
+    private String [] carModels;
+    private String email;
+    private String phoneNumber;
+   
+ 
+
+    public String getFirstName()
+    {
+        return firstName;
+    }
+
+    public void setFirstName(String firstName)
+    {
+        this.firstName = firstName;
+    }
+
+    public String getLastName()
+    {
+        return lastName;
+    }
+
+    public void setLastName(String lastName)
+    {
+        this.lastName = lastName;
+    }
+
+
+
+
+	public void setSport(String sport) {
+		this.sport = sport;
+	}
+
+	public void setGender(String gender) {
+		this.gender = gender;
+	}
+
+	public String getGender() {
+		return gender;
+	}
+
+	public String getSport() {
+		return sport;
+	}
+
+	public void setResidency(String residency) {
+		this.residency = residency;
+	}
+
+	public String getResidency() {
+		return residency;
+	}
+
+	public void setOver21(boolean over21) {
+		this.over21 = over21;
+	}
+
+	public boolean isOver21() {
+		return over21;
+	}
+
+	public void setCarModels(String [] carModels) {
+		this.carModels = carModels;
+	}
+
+	public String [] getCarModels() {
+		return carModels;
+	}
+
+	public String toString()
+    {
+        return "First Name: " + getFirstName() + " | " +
+        " Last Name:  " + getLastName() + " | " +
+        " Favorite Sport: " + getSport() + " | " +
+        " Gender: " + getGender() + " | " +  
+        " Residency: " + getResidency() + " | " +
+        " Over 21: " + isOver21()  + " | " +
+        " Car models: " + Arrays.asList( getCarModels() ) + " | " +
+        " Email: " + getEmail() + " | " +
+        " Phone: " + getPhoneNumber();
+        
+        
+    }
+
+	public void setEmail(String email) {
+		this.email = email;
+	}
+
+	public String getEmail() {
+		return email;
+	}
+
+	public void setPhoneNumber(String phoneNumber) {
+		this.phoneNumber = phoneNumber;
+	}
+
+	public String getPhoneNumber() {
+		return phoneNumber;
+	}
+
+
+}
diff --git a/struts2examples/exclude_parameters/src/main/java/org/apache/struts/edit/model/State.java b/struts2examples/exclude_parameters/src/main/java/org/apache/struts/edit/model/State.java
new file mode 100644
index 0000000..bb927e1
--- /dev/null
+++ b/struts2examples/exclude_parameters/src/main/java/org/apache/struts/edit/model/State.java
@@ -0,0 +1,39 @@
+package org.apache.struts.edit.model;
+
+public class State {
+	
+	private String stateAbbr;
+	
+	private String stateName;
+	
+	public State (String stateAbbr, String stateName) {
+		
+		this.stateAbbr = stateAbbr;
+		this.stateName = stateName;
+		
+	}
+
+	public void setStateAbbr(String stateAbbr) {
+		this.stateAbbr = stateAbbr;
+	}
+
+	public String getStateAbbr() {
+		return stateAbbr;
+	}
+
+	public void setStateName(String stateName) {
+		this.stateName = stateName;
+	}
+
+	public String getStateName() {
+		return stateName;
+	}
+	
+	public String toString() {
+		
+		return getStateAbbr() ;
+		
+	}
+	
+
+}
diff --git a/struts2examples/exclude_parameters/src/main/java/org/apache/struts/edit/service/CarModelsService.java b/struts2examples/exclude_parameters/src/main/java/org/apache/struts/edit/service/CarModelsService.java
new file mode 100644
index 0000000..e931dbe
--- /dev/null
+++ b/struts2examples/exclude_parameters/src/main/java/org/apache/struts/edit/service/CarModelsService.java
@@ -0,0 +1,18 @@
+/**
+ * 
+ */
+package org.apache.struts.edit.service;
+
+/**
+ * Specifies what methods a CarModelService
+ * class must implement to provide information
+ * about car models.
+ * @author bphillips
+ *
+ */
+public interface CarModelsService {
+	
+	
+	String [] getCarModels() ;
+
+}
diff --git a/struts2examples/exclude_parameters/src/main/java/org/apache/struts/edit/service/CarModelsServiceHardCoded.java b/struts2examples/exclude_parameters/src/main/java/org/apache/struts/edit/service/CarModelsServiceHardCoded.java
new file mode 100644
index 0000000..7d7eb20
--- /dev/null
+++ b/struts2examples/exclude_parameters/src/main/java/org/apache/struts/edit/service/CarModelsServiceHardCoded.java
@@ -0,0 +1,22 @@
+package org.apache.struts.edit.service;
+
+/**
+ * Provides information on car models using data hard-coded
+ * in this class.
+ * @author bphillips
+ *
+ */
+public class CarModelsServiceHardCoded implements CarModelsService {
+	
+
+	@Override
+	public String[] getCarModels() {
+		
+		String [] carModelsAvailable = {"Ford","Chrysler","Toyota","Nissan"};
+		
+		return carModelsAvailable ;
+		
+		
+	}
+
+}
diff --git a/struts2examples/exclude_parameters/src/main/java/org/apache/struts/edit/service/EditService.java b/struts2examples/exclude_parameters/src/main/java/org/apache/struts/edit/service/EditService.java
new file mode 100644
index 0000000..f52e053
--- /dev/null
+++ b/struts2examples/exclude_parameters/src/main/java/org/apache/struts/edit/service/EditService.java
@@ -0,0 +1,12 @@
+package org.apache.struts.edit.service;
+
+import org.apache.struts.edit.model.Person;
+
+public interface EditService {
+	
+	
+	Person getPerson() ;
+
+	void savePerson(Person personBean);
+
+}
diff --git a/struts2examples/exclude_parameters/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java b/struts2examples/exclude_parameters/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java
new file mode 100644
index 0000000..8fd35e2
--- /dev/null
+++ b/struts2examples/exclude_parameters/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java
@@ -0,0 +1,60 @@
+package org.apache.struts.edit.service;
+
+
+
+import org.apache.struts.edit.model.Person;
+
+/**
+ * Implement Services needed to edit and save
+ * a Person object's state.  In this implementation
+ * the Person object's state is stored in memory
+ * @author brucephillips
+ *
+ */
+
+public class EditServiceInMemory implements EditService {
+	
+	
+	private static Person person ;
+	private static String [] carModels = {"Ford","Nissan"};
+
+	
+	static {
+		
+		person = new Person();
+		person.setFirstName("Bruce");
+		person.setLastName("Phillips");
+		person.setEmail("bphillips@ku.edu");
+		person.setSport("basketball");
+		person.setGender("not sure");
+		person.setResidency("KS");
+		person.setOver21(true);		
+		person.setCarModels( carModels);	
+		person.setPhoneNumber("123-456-9999");
+
+		
+
+	}
+
+	
+	public Person getPerson() {
+		
+		return EditServiceInMemory.person;
+	}
+
+
+	public void savePerson(Person personBean) {
+
+		EditServiceInMemory.person.setFirstName(personBean.getFirstName() );
+		EditServiceInMemory.person.setLastName(personBean.getLastName() );
+		EditServiceInMemory.person.setSport(personBean.getSport() );
+		EditServiceInMemory.person.setGender( personBean.getGender() );
+		EditServiceInMemory.person.setResidency( personBean.getResidency() );
+		EditServiceInMemory.person.setOver21( personBean.isOver21() );
+		EditServiceInMemory.person.setCarModels(personBean.getCarModels() );
+		EditServiceInMemory.person.setEmail( personBean.getEmail() );
+		EditServiceInMemory.person.setPhoneNumber( personBean.getPhoneNumber() );
+
+	}
+
+}
diff --git a/struts2examples/exclude_parameters/src/main/resources/log4j.dtd b/struts2examples/exclude_parameters/src/main/resources/log4j.dtd
new file mode 100644
index 0000000..1aabd96
--- /dev/null
+++ b/struts2examples/exclude_parameters/src/main/resources/log4j.dtd
@@ -0,0 +1,227 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<!-- Authors: Chris Taylor, Ceki Gulcu. -->
+
+<!-- Version: 1.2 -->
+
+<!-- A configuration element consists of optional renderer
+elements,appender elements, categories and an optional root
+element. -->
+
+<!ELEMENT log4j:configuration (renderer*, appender*,plugin*, (category|logger)*,root?,
+                               (categoryFactory|loggerFactory)?)>
+
+<!-- The "threshold" attribute takes a level value below which -->
+<!-- all logging statements are disabled. -->
+
+<!-- Setting the "debug" enable the printing of internal log4j logging   -->
+<!-- statements.                                                         -->
+
+<!-- By default, debug attribute is "null", meaning that we not do touch -->
+<!-- internal log4j logging settings. The "null" value for the threshold -->
+<!-- attribute can be misleading. The threshold field of a repository	 -->
+<!-- cannot be set to null. The "null" value for the threshold attribute -->
+<!-- simply means don't touch the threshold field, the threshold field   --> 
+<!-- keeps its old value.                                                -->
+     
+<!ATTLIST log4j:configuration
+  xmlns:log4j              CDATA #FIXED "http://jakarta.apache.org/log4j/" 
+  threshold                (all|trace|debug|info|warn|error|fatal|off|null) "null"
+  debug                    (true|false|null)  "null"
+  reset                    (true|false) "false"
+>
+
+<!-- renderer elements allow the user to customize the conversion of  -->
+<!-- message objects to String.                                       -->
+
+<!ELEMENT renderer EMPTY>
+<!ATTLIST renderer
+  renderedClass  CDATA #REQUIRED
+  renderingClass CDATA #REQUIRED
+>
+
+<!-- Appenders must have a name and a class. -->
+<!-- Appenders may contain an error handler, a layout, optional parameters -->
+<!-- and filters. They may also reference (or include) other appenders. -->
+<!ELEMENT appender (errorHandler?, param*,
+      rollingPolicy?, triggeringPolicy?, connectionSource?,
+      layout?, filter*, appender-ref*)>
+<!ATTLIST appender
+  name 		CDATA 	#REQUIRED
+  class 	CDATA	#REQUIRED
+>
+
+<!ELEMENT layout (param*)>
+<!ATTLIST layout
+  class		CDATA	#REQUIRED
+>
+
+<!ELEMENT filter (param*)>
+<!ATTLIST filter
+  class		CDATA	#REQUIRED
+>
+
+<!-- ErrorHandlers can be of any class. They can admit any number of -->
+<!-- parameters. -->
+
+<!ELEMENT errorHandler (param*, root-ref?, logger-ref*,  appender-ref?)> 
+<!ATTLIST errorHandler
+   class        CDATA   #REQUIRED 
+>
+
+<!ELEMENT root-ref EMPTY>
+
+<!ELEMENT logger-ref EMPTY>
+<!ATTLIST logger-ref
+  ref CDATA #REQUIRED
+>
+
+<!ELEMENT param EMPTY>
+<!ATTLIST param
+  name		CDATA   #REQUIRED
+  value		CDATA	#REQUIRED
+>
+
+
+<!-- The priority class is org.apache.log4j.Level by default -->
+<!ELEMENT priority (param*)>
+<!ATTLIST priority
+  class   CDATA	#IMPLIED
+  value	  CDATA #REQUIRED
+>
+
+<!-- The level class is org.apache.log4j.Level by default -->
+<!ELEMENT level (param*)>
+<!ATTLIST level
+  class   CDATA	#IMPLIED
+  value	  CDATA #REQUIRED
+>
+
+
+<!-- If no level element is specified, then the configurator MUST not -->
+<!-- touch the level of the named category. -->
+<!ELEMENT category (param*,(priority|level)?,appender-ref*)>
+<!ATTLIST category
+  class         CDATA   #IMPLIED
+  name		CDATA	#REQUIRED
+  additivity	(true|false) "true"  
+>
+
+<!-- If no level element is specified, then the configurator MUST not -->
+<!-- touch the level of the named logger. -->
+<!ELEMENT logger (level?,appender-ref*)>
+<!ATTLIST logger
+  name		CDATA	#REQUIRED
+  additivity	(true|false) "true"  
+>
+
+
+<!ELEMENT categoryFactory (param*)>
+<!ATTLIST categoryFactory 
+   class        CDATA #REQUIRED>
+
+<!ELEMENT loggerFactory (param*)>
+<!ATTLIST loggerFactory
+   class        CDATA #REQUIRED>
+
+<!ELEMENT appender-ref EMPTY>
+<!ATTLIST appender-ref
+  ref CDATA #REQUIRED
+>
+
+<!-- plugins must have a name and class and can have optional parameters -->
+<!ELEMENT plugin (param*, connectionSource?)>
+<!ATTLIST plugin
+  name 		CDATA 	   #REQUIRED
+  class 	CDATA  #REQUIRED
+>
+
+<!ELEMENT connectionSource (dataSource?, param*)>
+<!ATTLIST connectionSource
+  class        CDATA  #REQUIRED
+>
+
+<!ELEMENT dataSource (param*)>
+<!ATTLIST dataSource
+  class        CDATA  #REQUIRED
+>
+
+<!ELEMENT triggeringPolicy ((param|filter)*)>
+<!ATTLIST triggeringPolicy
+  name 		CDATA  #IMPLIED
+  class 	CDATA  #REQUIRED
+>
+
+<!ELEMENT rollingPolicy (param*)>
+<!ATTLIST rollingPolicy
+  name 		CDATA  #IMPLIED
+  class 	CDATA  #REQUIRED
+>
+
+
+<!-- If no priority element is specified, then the configurator MUST not -->
+<!-- touch the priority of root. -->
+<!-- The root category always exists and cannot be subclassed. -->
+<!ELEMENT root (param*, (priority|level)?, appender-ref*)>
+
+
+<!-- ==================================================================== -->
+<!--                       A logging event                                -->
+<!-- ==================================================================== -->
+<!ELEMENT log4j:eventSet (log4j:event*)>
+<!ATTLIST log4j:eventSet
+  xmlns:log4j             CDATA #FIXED "http://jakarta.apache.org/log4j/" 
+  version                (1.1|1.2) "1.2" 
+  includesLocationInfo   (true|false) "true"
+>
+
+
+
+<!ELEMENT log4j:event (log4j:message, log4j:NDC?, log4j:throwable?, 
+                       log4j:locationInfo?, log4j:properties?) >
+
+<!-- The timestamp format is application dependent. -->
+<!ATTLIST log4j:event
+    logger     CDATA #REQUIRED
+    level      CDATA #REQUIRED
+    thread     CDATA #REQUIRED
+    timestamp  CDATA #REQUIRED
+    time       CDATA #IMPLIED
+>
+
+<!ELEMENT log4j:message (#PCDATA)>
+<!ELEMENT log4j:NDC (#PCDATA)>
+
+<!ELEMENT log4j:throwable (#PCDATA)>
+
+<!ELEMENT log4j:locationInfo EMPTY>
+<!ATTLIST log4j:locationInfo
+  class  CDATA	#REQUIRED
+  method CDATA	#REQUIRED
+  file   CDATA	#REQUIRED
+  line   CDATA	#REQUIRED
+>
+
+<!ELEMENT log4j:properties (log4j:data*)>
+
+<!ELEMENT log4j:data EMPTY>
+<!ATTLIST log4j:data
+  name   CDATA	#REQUIRED
+  value  CDATA	#REQUIRED
+>
diff --git a/struts2examples/exclude_parameters/src/main/resources/log4j.xml b/struts2examples/exclude_parameters/src/main/resources/log4j.xml
new file mode 100644
index 0000000..2100cb2
--- /dev/null
+++ b/struts2examples/exclude_parameters/src/main/resources/log4j.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" "log4j.dtd">
+
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
+    
+    <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
+       <layout class="org.apache.log4j.PatternLayout"> 
+          <param name="ConversionPattern" value="%d %-5p %c.%M:%L - %m%n"/> 
+       </layout> 
+    </appender>
+ 
+    <!-- specify the logging level for loggers from other libraries -->
+    <logger name="com.opensymphony">
+    	<level value="DEBUG" />
+    </logger>
+
+    <logger name="org.apache.struts2">
+    	 <level value="DEBUG" />
+    </logger>
+  
+   <!-- for all other loggers log only debug and above log messages -->
+     <root>
+        <priority value="INFO"/> 
+        <appender-ref ref="STDOUT" /> 
+     </root> 
+    
+</log4j:configuration> 
+
diff --git a/struts2examples/exclude_parameters/src/main/resources/org/apache/struts/edit/action/EditAction-validation.xml b/struts2examples/exclude_parameters/src/main/resources/org/apache/struts/edit/action/EditAction-validation.xml
new file mode 100644
index 0000000..16f520d
--- /dev/null
+++ b/struts2examples/exclude_parameters/src/main/resources/org/apache/struts/edit/action/EditAction-validation.xml
@@ -0,0 +1,35 @@
+<!DOCTYPE validators PUBLIC
+         "-//Apache Struts//XWork Validator 1.0.3//EN"
+           "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
+<validators>
+ <validator type="requiredstring">
+ 	<param name="fieldname">personBean.firstName</param>
+ 	<message>First name is required.</message>
+ </validator>
+  <validator type="requiredstring">
+ 	<param name="fieldname">personBean.lastName</param>
+ 	<message>Last name is required.</message>
+ </validator>
+ <validator type="requiredstring">
+ 	<param name="fieldname">personBean.email</param>
+ 	<message>Email address is required.</message>
+ </validator>
+ <validator type="email">
+ 	<param name="fieldname">personBean.email</param>
+ 	<message>Email address not valid.</message>
+ </validator>
+ <validator type="requiredstring">
+ 	<param name="fieldname">personBean.phoneNumber</param>
+ 	<message>Phone number is required.</message>
+ </validator>
+<validator type="regex">
+	<param name="fieldname">personBean.phoneNumber</param>
+	<param name="expression"><![CDATA[\d{3}-\d{3}-\d{4}]]></param>
+	<message>Phone number must be entered as 999-999-9999.</message>
+</validator>
+<validator type="fieldexpression">
+	<param name="fieldname">personBean.carModels</param>
+	<param name="expression"><![CDATA[personBean.carModels.length > 0]]></param>
+	<message>You must select at least one car model.</message>
+</validator>
+</validators>
diff --git a/struts2examples/exclude_parameters/src/main/resources/org/apache/struts/edit/action/EditAction.properties b/struts2examples/exclude_parameters/src/main/resources/org/apache/struts/edit/action/EditAction.properties
new file mode 100644
index 0000000..83f400a
--- /dev/null
+++ b/struts2examples/exclude_parameters/src/main/resources/org/apache/struts/edit/action/EditAction.properties
@@ -0,0 +1,10 @@
+personBean.firstName=First name
+personBean.lastName=Last name
+personBean.email=Email address
+personBean.phoneNumber=Phone number (999-999-9999)
+personBean.sport=Favorite sport
+personBean.gender=Gender
+personBean.residency=State resident
+personBean.over21=21 or older
+personBean.carModels=Car models owned
+submit=Save Changes
\ No newline at end of file
diff --git a/struts2examples/exclude_parameters/src/main/resources/struts.xml b/struts2examples/exclude_parameters/src/main/resources/struts.xml
new file mode 100644
index 0000000..f0ee62d
--- /dev/null
+++ b/struts2examples/exclude_parameters/src/main/resources/struts.xml
@@ -0,0 +1,42 @@
+<?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="basicstruts2" extends="struts-default" >
+	
+	    <interceptors>
+	 		<interceptor-stack name="appDefault">
+	        	 <interceptor-ref name="defaultStack">
+	      			<param name="exception.logEnabled">true</param>
+	      			<param name="exception.logLevel">ERROR</param>
+	      			<param name="params.excludeParams">dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,parameters\...*,submit</param>
+	   			</interceptor-ref>
+	 	    </interceptor-stack>
+		</interceptors>
+		
+		<default-interceptor-ref name="appDefault" />
+
+        <!-- If no class attribute is specified the framework will assume success and 
+        render the result index.jsp -->
+        <!-- If no name value for the result node is specified the success value is the default -->
+		<action name="index">
+			<result>/index.jsp</result>
+		</action>
+
+	    <action name="edit" class="org.apache.struts.edit.action.EditAction" method="input">
+	    	<result name="input">/edit.jsp</result>
+	    </action>
+	    
+	    <action name="save" class="org.apache.struts.edit.action.EditAction" method="execute">
+	        <result name="input">/edit.jsp</result>
+	    	<result name="success">/thankyou.jsp</result>
+	    </action>
+
+	</package>
+
+</struts>
\ No newline at end of file
diff --git a/struts2examples/exclude_parameters/src/main/webapp/META-INF/MANIFEST.MF b/struts2examples/exclude_parameters/src/main/webapp/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..5e94951
--- /dev/null
+++ b/struts2examples/exclude_parameters/src/main/webapp/META-INF/MANIFEST.MF
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path: 
+
diff --git a/struts2examples/exclude_parameters/src/main/webapp/WEB-INF/web.xml b/struts2examples/exclude_parameters/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..3e29883
--- /dev/null
+++ b/struts2examples/exclude_parameters/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
+<display-name>Exclude Parameters</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.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
+    </filter>
+
+     <filter-mapping>
+        <filter-name>struts2</filter-name>
+        <url-pattern>/*</url-pattern>
+    </filter-mapping>
+    
+</web-app>
diff --git a/struts2examples/exclude_parameters/src/main/webapp/edit.jsp b/struts2examples/exclude_parameters/src/main/webapp/edit.jsp
new file mode 100644
index 0000000..67a9901
--- /dev/null
+++ b/struts2examples/exclude_parameters/src/main/webapp/edit.jsp
@@ -0,0 +1,30 @@
+<%@ 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>
+<s:head />
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Struts 2 Form Tags - Edit Person</title>
+</head>
+<body>
+<h1>Update Information</h1>
+
+<p>Use the form below to edit your information.</p>
+
+<s:form action="save" method="post">
+<s:textfield key="personBean.firstName" /> 
+<s:textfield key="personBean.lastName" /> 
+<s:textfield key="personBean.email" />
+<s:textfield key="personBean.phoneNumber" />
+<s:select key="personBean.sport" list="sports" />
+<s:radio key="personBean.gender" list="genders" />
+<s:select key="personBean.residency" list="states" listKey="stateAbbr" listValue="stateName" />
+<s:checkbox key="personBean.over21" />
+<s:checkboxlist key="personBean.carModels" list="carModelsAvailable" />
+<s:submit key="submit" />
+</s:form>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/struts2examples/exclude_parameters/src/main/webapp/index.jsp b/struts2examples/exclude_parameters/src/main/webapp/index.jsp
new file mode 100644
index 0000000..88209d8
--- /dev/null
+++ b/struts2examples/exclude_parameters/src/main/webapp/index.jsp
@@ -0,0 +1,16 @@
+<%@ 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>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Struts 2 Form Tags - Welcome</title>
+</head>
+<body>
+<h1>Welcome To Struts 2!</h1>
+
+<p><a href='<s:url action="edit" />' >Edit your information</a></p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/struts2examples/exclude_parameters/src/main/webapp/thankyou.jsp b/struts2examples/exclude_parameters/src/main/webapp/thankyou.jsp
new file mode 100644
index 0000000..5fa306f
--- /dev/null
+++ b/struts2examples/exclude_parameters/src/main/webapp/thankyou.jsp
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+    pageEncoding="ISO-8859-1"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Update Successful</title>
+</head>
+<body>
+
+<h1>Updated Information</h1>
+
+
+<p>Your information: <s:property value="personBean" /> </p>
+
+<p><a href="<s:url action='index' />" >Return to home page</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/struts2examples/pom.xml b/struts2examples/pom.xml
index dcf9b28..4608dd1 100644
--- a/struts2examples/pom.xml
+++ b/struts2examples/pom.xml
@@ -49,6 +49,7 @@
     <module>unit_testing</module>
     <module>http_session</module>
     <module>preparable_interface</module>
+    <module>exclude_parameters</module>
   </modules>
   
   	<dependencies>
