http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/preparable_interface/src/main/webapp/edit.jsp
----------------------------------------------------------------------
diff --git a/preparable_interface/src/main/webapp/edit.jsp 
b/preparable_interface/src/main/webapp/edit.jsp
deleted file mode 100644
index 67a9901..0000000
--- a/preparable_interface/src/main/webapp/edit.jsp
+++ /dev/null
@@ -1,30 +0,0 @@
-<%@ 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

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/preparable_interface/src/main/webapp/index.jsp
----------------------------------------------------------------------
diff --git a/preparable_interface/src/main/webapp/index.jsp 
b/preparable_interface/src/main/webapp/index.jsp
deleted file mode 100644
index 88209d8..0000000
--- a/preparable_interface/src/main/webapp/index.jsp
+++ /dev/null
@@ -1,16 +0,0 @@
-<%@ 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

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/preparable_interface/src/main/webapp/thankyou.jsp
----------------------------------------------------------------------
diff --git a/preparable_interface/src/main/webapp/thankyou.jsp 
b/preparable_interface/src/main/webapp/thankyou.jsp
deleted file mode 100644
index 5fa306f..0000000
--- a/preparable_interface/src/main/webapp/thankyou.jsp
+++ /dev/null
@@ -1,21 +0,0 @@
-<?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

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/restful2actionmapper/pom.xml
----------------------------------------------------------------------
diff --git a/restful2actionmapper/pom.xml b/restful2actionmapper/pom.xml
index eadf8cc..cff5924 100644
--- a/restful2actionmapper/pom.xml
+++ b/restful2actionmapper/pom.xml
@@ -1,20 +1,26 @@
 <?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>
+<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>restful2actionmapper</artifactId>
-       <packaging>war</packaging>
-       <name>REST to Action Mapper Example Application</name>
-       <description>Example of using Rest style URLs for 
-  Struts 2 Getting Started tutorials</description>
-       <build>
-               <finalName>reststyleactionmapper</finalName>
-       </build>
+    <artifactId>restful2actionmapper</artifactId>
+
+    <packaging>war</packaging>
+
+    <name>REST to Action Mapper Example Application</name>
+
+    <description>Example of using Rest style URLs for
+        Struts 2 Getting Started tutorials
+    </description>
+
+    <build>
+        <finalName>reststyleactionmapper</finalName>
+    </build>
 
 </project>

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/spring-struts/README.txt
----------------------------------------------------------------------
diff --git a/spring-struts/README.txt b/spring-struts/README.txt
new file mode 100644
index 0000000..c9b1d9a
--- /dev/null
+++ b/spring-struts/README.txt
@@ -0,0 +1,16 @@
+This is the example project referred to in the
+Struts 2 documentation, Struts 2 Spring 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/spring-struts/index.action.
+
+You should see a web page with Welcome to Struts 2!
+

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/spring-struts/pom.xml
----------------------------------------------------------------------
diff --git a/spring-struts/pom.xml b/spring-struts/pom.xml
new file mode 100644
index 0000000..0531b3a
--- /dev/null
+++ b/spring-struts/pom.xml
@@ -0,0 +1,29 @@
+<?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>spring-struts</artifactId>
+
+    <name>Struts2 with Spring Integration</name>
+
+    <packaging>war</packaging>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.struts</groupId>
+            <artifactId>struts2-spring-plugin</artifactId>
+            <version>${struts2.version}</version>
+        </dependency>
+    </dependencies>
+    <build>
+        <finalName>spring-struts</finalName>
+    </build>
+
+</project>

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/spring-struts/src/main/java/org/apache/struts/edit/action/EditAction.java
----------------------------------------------------------------------
diff --git 
a/spring-struts/src/main/java/org/apache/struts/edit/action/EditAction.java 
b/spring-struts/src/main/java/org/apache/struts/edit/action/EditAction.java
new file mode 100644
index 0000000..8cd09f5
--- /dev/null
+++ b/spring-struts/src/main/java/org/apache/struts/edit/action/EditAction.java
@@ -0,0 +1,106 @@
+package org.apache.struts.edit.action;
+
+import com.opensymphony.xwork2.ActionSupport;
+import org.apache.struts.edit.model.Person;
+import org.apache.struts.edit.model.State;
+import org.apache.struts.edit.service.EditService;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * Acts as a controller to handle actions
+ * related to editing a Person.
+ * @author bruce phillips
+ *
+ */
+public class EditAction extends ActionSupport {
+       
+       private static final long serialVersionUID = 1L;
+       
+       private EditService editService ;
+       
+       private Person personBean;
+       
+       private String [] sports = {"football", "baseball", "basketball" };
+       
+       private String [] genders = {"male", "female", "not sure" };
+       
+       private List<State> states ;
+
+       private String [] carModelsAvailable = 
{"Ford","Chrysler","Toyota","Nissan"};
+
+       public String execute() throws Exception {
+               
+           editService.savePerson( getPersonBean() );
+               
+               return SUCCESS;
+               
+       }
+       
+       
+       public String input() throws Exception {
+               
+               setPersonBean( editService.getPerson() );
+               
+               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;
+       }
+
+
+       public EditService getEditService() {
+               return editService;
+       }
+
+
+       public void setEditService(EditService editService) {
+               
+               this.editService = editService;
+               
+       }
+
+}

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/spring-struts/src/main/java/org/apache/struts/edit/model/Person.java
----------------------------------------------------------------------
diff --git 
a/spring-struts/src/main/java/org/apache/struts/edit/model/Person.java 
b/spring-struts/src/main/java/org/apache/struts/edit/model/Person.java
new file mode 100644
index 0000000..392a8de
--- /dev/null
+++ b/spring-struts/src/main/java/org/apache/struts/edit/model/Person.java
@@ -0,0 +1,96 @@
+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;
+ 
+
+    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() ) ;
+        
+    }
+}

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/spring-struts/src/main/java/org/apache/struts/edit/model/State.java
----------------------------------------------------------------------
diff --git 
a/spring-struts/src/main/java/org/apache/struts/edit/model/State.java 
b/spring-struts/src/main/java/org/apache/struts/edit/model/State.java
new file mode 100644
index 0000000..bb927e1
--- /dev/null
+++ b/spring-struts/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() ;
+               
+       }
+       
+
+}

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/spring-struts/src/main/java/org/apache/struts/edit/service/EditService.java
----------------------------------------------------------------------
diff --git 
a/spring-struts/src/main/java/org/apache/struts/edit/service/EditService.java 
b/spring-struts/src/main/java/org/apache/struts/edit/service/EditService.java
new file mode 100644
index 0000000..a5b347b
--- /dev/null
+++ 
b/spring-struts/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);
+
+}

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/spring-struts/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java
----------------------------------------------------------------------
diff --git 
a/spring-struts/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java
 
b/spring-struts/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java
new file mode 100644
index 0000000..7638152
--- /dev/null
+++ 
b/spring-struts/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java
@@ -0,0 +1,51 @@
+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.setSport("basketball");
+               person.setGender("not sure");
+               person.setResidency("KS");
+               person.setOver21(true);         
+               person.setCarModels( carModels);                
+
+       }
+
+       
+       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() );
+
+       }
+
+}

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/spring-struts/src/main/resources/log4j.dtd
----------------------------------------------------------------------
diff --git a/spring-struts/src/main/resources/log4j.dtd 
b/spring-struts/src/main/resources/log4j.dtd
new file mode 100644
index 0000000..1aabd96
--- /dev/null
+++ b/spring-struts/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
+>

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/spring-struts/src/main/resources/log4j.xml
----------------------------------------------------------------------
diff --git a/spring-struts/src/main/resources/log4j.xml 
b/spring-struts/src/main/resources/log4j.xml
new file mode 100644
index 0000000..2100cb2
--- /dev/null
+++ b/spring-struts/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> 
+

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/spring-struts/src/main/resources/org/apache/struts/edit/action/EditAction.properties
----------------------------------------------------------------------
diff --git 
a/spring-struts/src/main/resources/org/apache/struts/edit/action/EditAction.properties
 
b/spring-struts/src/main/resources/org/apache/struts/edit/action/EditAction.properties
new file mode 100644
index 0000000..0f08667
--- /dev/null
+++ 
b/spring-struts/src/main/resources/org/apache/struts/edit/action/EditAction.properties
@@ -0,0 +1,8 @@
+personBean.firstName=First name
+personBean.lastName=Last name
+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

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/spring-struts/src/main/resources/struts.xml
----------------------------------------------------------------------
diff --git a/spring-struts/src/main/resources/struts.xml 
b/spring-struts/src/main/resources/struts.xml
new file mode 100644
index 0000000..30c5e5d
--- /dev/null
+++ b/spring-struts/src/main/resources/struts.xml
@@ -0,0 +1,29 @@
+<?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">
+
+        <!-- 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="success">/thankyou.jsp</result>
+           </action>
+
+       </package>
+
+</struts>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/spring-struts/src/main/webapp/META-INF/MANIFEST.MF
----------------------------------------------------------------------
diff --git a/spring-struts/src/main/webapp/META-INF/MANIFEST.MF 
b/spring-struts/src/main/webapp/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..254272e
--- /dev/null
+++ b/spring-struts/src/main/webapp/META-INF/MANIFEST.MF
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path: 
+

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/spring-struts/src/main/webapp/WEB-INF/applicationContext.xml
----------------------------------------------------------------------
diff --git a/spring-struts/src/main/webapp/WEB-INF/applicationContext.xml 
b/spring-struts/src/main/webapp/WEB-INF/applicationContext.xml
new file mode 100644
index 0000000..7f3f278
--- /dev/null
+++ b/spring-struts/src/main/webapp/WEB-INF/applicationContext.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans";
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+       xsi:schemaLocation="
+            http://www.springframework.org/schema/beans
+            http://www.springframework.org/schema/beans/spring-beans.xsd";>
+
+<bean id="editService" 
class="org.apache.struts.edit.service.EditServiceInMemory" />
+
+</beans>

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/spring-struts/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/spring-struts/src/main/webapp/WEB-INF/web.xml 
b/spring-struts/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..e8cb9ce
--- /dev/null
+++ b/spring-struts/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,25 @@
+<?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>Spring Struts 2</display-name>
+       
+       <welcome-file-list>
+               <welcome-file>index.jsp</welcome-file>
+       </welcome-file-list>
+       
+       <listener>
+               
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
+       </listener>
+
+       <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>

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/spring-struts/src/main/webapp/edit.jsp
----------------------------------------------------------------------
diff --git a/spring-struts/src/main/webapp/edit.jsp 
b/spring-struts/src/main/webapp/edit.jsp
new file mode 100644
index 0000000..0cd05e4
--- /dev/null
+++ b/spring-struts/src/main/webapp/edit.jsp
@@ -0,0 +1,29 @@
+<%@ 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: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

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/spring-struts/src/main/webapp/index.jsp
----------------------------------------------------------------------
diff --git a/spring-struts/src/main/webapp/index.jsp 
b/spring-struts/src/main/webapp/index.jsp
new file mode 100644
index 0000000..88209d8
--- /dev/null
+++ b/spring-struts/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

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/spring-struts/src/main/webapp/thankyou.jsp
----------------------------------------------------------------------
diff --git a/spring-struts/src/main/webapp/thankyou.jsp 
b/spring-struts/src/main/webapp/thankyou.jsp
new file mode 100644
index 0000000..5fa306f
--- /dev/null
+++ b/spring-struts/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

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/spring_struts/README.txt
----------------------------------------------------------------------
diff --git a/spring_struts/README.txt b/spring_struts/README.txt
deleted file mode 100644
index cb5053d..0000000
--- a/spring_struts/README.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-This is the example project referred to in the
-Struts 2 documentation, Struts 2 Spring 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/spring_struts/index.action.
-
-You should see a web page with Welcome to Struts 2!
-

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/spring_struts/pom.xml
----------------------------------------------------------------------
diff --git a/spring_struts/pom.xml b/spring_struts/pom.xml
deleted file mode 100644
index 6ba3a6b..0000000
--- a/spring_struts/pom.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?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>spring_struts</artifactId>
-
-  <name>spring_struts</name>
-
-  <packaging>war</packaging>
-  
-  <dependencies>
-               <dependency>
-                       <groupId>org.apache.struts</groupId>
-                       <artifactId>struts2-spring-plugin</artifactId>
-                       <version>${struts2.version}</version>
-               </dependency>
-  </dependencies>
-      <build>
-               <finalName>spring_struts</finalName>
-       </build>
-
-</project>

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/spring_struts/src/main/java/org/apache/struts/edit/action/EditAction.java
----------------------------------------------------------------------
diff --git 
a/spring_struts/src/main/java/org/apache/struts/edit/action/EditAction.java 
b/spring_struts/src/main/java/org/apache/struts/edit/action/EditAction.java
deleted file mode 100644
index c157d9e..0000000
--- a/spring_struts/src/main/java/org/apache/struts/edit/action/EditAction.java
+++ /dev/null
@@ -1,108 +0,0 @@
-package org.apache.struts.edit.action;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.struts.edit.model.Person;
-import org.apache.struts.edit.model.State;
-import org.apache.struts.edit.service.EditService;
-
-
-import com.opensymphony.xwork2.ActionSupport;
-
-/**
- * Acts as a controller to handle actions
- * related to editing a Person.
- * @author bruce phillips
- *
- */
-public class EditAction extends ActionSupport {
-       
-       private static final long serialVersionUID = 1L;
-       
-       private EditService editService ;
-       
-       private Person personBean;
-       
-       private String [] sports = {"football", "baseball", "basketball" };
-       
-       private String [] genders = {"male", "female", "not sure" };
-       
-       private List<State> states ;
-
-       private String [] carModelsAvailable = 
{"Ford","Chrysler","Toyota","Nissan"};
-
-       public String execute() throws Exception {
-               
-           editService.savePerson( getPersonBean() );
-               
-               return SUCCESS;
-               
-       }
-       
-       
-       public String input() throws Exception {
-               
-               setPersonBean( editService.getPerson() );
-               
-               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;
-       }
-
-
-       public EditService getEditService() {
-               return editService;
-       }
-
-
-       public void setEditService(EditService editService) {
-               
-               this.editService = editService;
-               
-       }
-
-}

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/spring_struts/src/main/java/org/apache/struts/edit/model/Person.java
----------------------------------------------------------------------
diff --git 
a/spring_struts/src/main/java/org/apache/struts/edit/model/Person.java 
b/spring_struts/src/main/java/org/apache/struts/edit/model/Person.java
deleted file mode 100644
index 392a8de..0000000
--- a/spring_struts/src/main/java/org/apache/struts/edit/model/Person.java
+++ /dev/null
@@ -1,96 +0,0 @@
-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;
- 
-
-    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() ) ;
-        
-    }
-}

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/spring_struts/src/main/java/org/apache/struts/edit/model/State.java
----------------------------------------------------------------------
diff --git 
a/spring_struts/src/main/java/org/apache/struts/edit/model/State.java 
b/spring_struts/src/main/java/org/apache/struts/edit/model/State.java
deleted file mode 100644
index bb927e1..0000000
--- a/spring_struts/src/main/java/org/apache/struts/edit/model/State.java
+++ /dev/null
@@ -1,39 +0,0 @@
-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() ;
-               
-       }
-       
-
-}

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/spring_struts/src/main/java/org/apache/struts/edit/service/EditService.java
----------------------------------------------------------------------
diff --git 
a/spring_struts/src/main/java/org/apache/struts/edit/service/EditService.java 
b/spring_struts/src/main/java/org/apache/struts/edit/service/EditService.java
deleted file mode 100644
index f52e053..0000000
--- 
a/spring_struts/src/main/java/org/apache/struts/edit/service/EditService.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package org.apache.struts.edit.service;
-
-import org.apache.struts.edit.model.Person;
-
-public interface EditService {
-       
-       
-       Person getPerson() ;
-
-       void savePerson(Person personBean);
-
-}

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/spring_struts/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java
----------------------------------------------------------------------
diff --git 
a/spring_struts/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java
 
b/spring_struts/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java
deleted file mode 100644
index 169b1d0..0000000
--- 
a/spring_struts/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java
+++ /dev/null
@@ -1,51 +0,0 @@
-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.setSport("basketball");
-               person.setGender("not sure");
-               person.setResidency("KS");
-               person.setOver21(true);         
-               person.setCarModels( carModels);                
-
-       }
-
-       
-       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() );
-
-       }
-
-}

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/spring_struts/src/main/resources/log4j.dtd
----------------------------------------------------------------------
diff --git a/spring_struts/src/main/resources/log4j.dtd 
b/spring_struts/src/main/resources/log4j.dtd
deleted file mode 100644
index 1aabd96..0000000
--- a/spring_struts/src/main/resources/log4j.dtd
+++ /dev/null
@@ -1,227 +0,0 @@
-<?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
->

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/spring_struts/src/main/resources/log4j.xml
----------------------------------------------------------------------
diff --git a/spring_struts/src/main/resources/log4j.xml 
b/spring_struts/src/main/resources/log4j.xml
deleted file mode 100644
index 2100cb2..0000000
--- a/spring_struts/src/main/resources/log4j.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?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> 
-

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/spring_struts/src/main/resources/org/apache/struts/edit/action/EditAction.properties
----------------------------------------------------------------------
diff --git 
a/spring_struts/src/main/resources/org/apache/struts/edit/action/EditAction.properties
 
b/spring_struts/src/main/resources/org/apache/struts/edit/action/EditAction.properties
deleted file mode 100644
index 82869db..0000000
--- 
a/spring_struts/src/main/resources/org/apache/struts/edit/action/EditAction.properties
+++ /dev/null
@@ -1,8 +0,0 @@
-personBean.firstName=First name
-personBean.lastName=Last name
-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

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/spring_struts/src/main/resources/struts.xml
----------------------------------------------------------------------
diff --git a/spring_struts/src/main/resources/struts.xml 
b/spring_struts/src/main/resources/struts.xml
deleted file mode 100644
index 30c5e5d..0000000
--- a/spring_struts/src/main/resources/struts.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?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">
-
-        <!-- 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="success">/thankyou.jsp</result>
-           </action>
-
-       </package>
-
-</struts>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/spring_struts/src/main/webapp/META-INF/MANIFEST.MF
----------------------------------------------------------------------
diff --git a/spring_struts/src/main/webapp/META-INF/MANIFEST.MF 
b/spring_struts/src/main/webapp/META-INF/MANIFEST.MF
deleted file mode 100644
index 5e94951..0000000
--- a/spring_struts/src/main/webapp/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,3 +0,0 @@
-Manifest-Version: 1.0
-Class-Path: 
-

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/spring_struts/src/main/webapp/WEB-INF/applicationContext.xml
----------------------------------------------------------------------
diff --git a/spring_struts/src/main/webapp/WEB-INF/applicationContext.xml 
b/spring_struts/src/main/webapp/WEB-INF/applicationContext.xml
deleted file mode 100644
index 7f3f278..0000000
--- a/spring_struts/src/main/webapp/WEB-INF/applicationContext.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans";
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-       xsi:schemaLocation="
-            http://www.springframework.org/schema/beans
-            http://www.springframework.org/schema/beans/spring-beans.xsd";>
-
-<bean id="editService" 
class="org.apache.struts.edit.service.EditServiceInMemory" />
-
-</beans>

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/spring_struts/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/spring_struts/src/main/webapp/WEB-INF/web.xml 
b/spring_struts/src/main/webapp/WEB-INF/web.xml
deleted file mode 100644
index e8cb9ce..0000000
--- a/spring_struts/src/main/webapp/WEB-INF/web.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?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>Spring Struts 2</display-name>
-       
-       <welcome-file-list>
-               <welcome-file>index.jsp</welcome-file>
-       </welcome-file-list>
-       
-       <listener>
-               
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
-       </listener>
-
-       <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>

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/spring_struts/src/main/webapp/edit.jsp
----------------------------------------------------------------------
diff --git a/spring_struts/src/main/webapp/edit.jsp 
b/spring_struts/src/main/webapp/edit.jsp
deleted file mode 100644
index 0cd05e4..0000000
--- a/spring_struts/src/main/webapp/edit.jsp
+++ /dev/null
@@ -1,29 +0,0 @@
-<%@ 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: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

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/spring_struts/src/main/webapp/index.jsp
----------------------------------------------------------------------
diff --git a/spring_struts/src/main/webapp/index.jsp 
b/spring_struts/src/main/webapp/index.jsp
deleted file mode 100644
index 88209d8..0000000
--- a/spring_struts/src/main/webapp/index.jsp
+++ /dev/null
@@ -1,16 +0,0 @@
-<%@ 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

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/spring_struts/src/main/webapp/thankyou.jsp
----------------------------------------------------------------------
diff --git a/spring_struts/src/main/webapp/thankyou.jsp 
b/spring_struts/src/main/webapp/thankyou.jsp
deleted file mode 100644
index 5fa306f..0000000
--- a/spring_struts/src/main/webapp/thankyou.jsp
+++ /dev/null
@@ -1,21 +0,0 @@
-<?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

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/themes-override/README.txt
----------------------------------------------------------------------
diff --git a/themes-override/README.txt b/themes-override/README.txt
new file mode 100644
index 0000000..2a1b48c
--- /dev/null
+++ b/themes-override/README.txt
@@ -0,0 +1,16 @@
+This is the example project referred to in the
+Struts 2 documentation, Struts 2 Themes 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/themes-override/index.action.
+
+You should see a web page with Welcome to Struts 2!
+

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/themes-override/pom.xml
----------------------------------------------------------------------
diff --git a/themes-override/pom.xml b/themes-override/pom.xml
new file mode 100644
index 0000000..d39a1c9
--- /dev/null
+++ b/themes-override/pom.xml
@@ -0,0 +1,40 @@
+<?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>themes-override</artifactId>
+
+    <name>Struts 2 Themes Override</name>
+
+    <description>Struts 2 themes override example application for the Struts 2 
getting started tutorials</description>
+
+    <packaging>war</packaging>
+
+    <build>
+        <finalName>themes-override</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.mortbay.jetty</groupId>
+                <artifactId>jetty-maven-plugin</artifactId>
+                <version>8.1.16.v20140903</version>
+                <configuration>
+                    <stopKey>CTRL+C</stopKey>
+                    <stopPort>8999</stopPort>
+                    <scanIntervalSeconds>10</scanIntervalSeconds>
+                    <scanTargets>
+                        
<scanTarget>src/main/webapp/WEB-INF/web.xml</scanTarget>
+                    </scanTargets>
+                </configuration>
+            </plugin>
+        </plugins>
+
+    </build>
+
+</project>

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/themes-override/src/main/java/org/apache/struts/edit/action/EditAction.java
----------------------------------------------------------------------
diff --git 
a/themes-override/src/main/java/org/apache/struts/edit/action/EditAction.java 
b/themes-override/src/main/java/org/apache/struts/edit/action/EditAction.java
new file mode 100644
index 0000000..700b2f5
--- /dev/null
+++ 
b/themes-override/src/main/java/org/apache/struts/edit/action/EditAction.java
@@ -0,0 +1,95 @@
+package org.apache.struts.edit.action;
+
+import com.opensymphony.xwork2.ActionSupport;
+import org.apache.struts.edit.model.Person;
+import org.apache.struts.edit.model.State;
+import org.apache.struts.edit.service.EditService;
+import org.apache.struts.edit.service.EditServiceInMemory;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * Acts as a controller to handle actions
+ * related to editing a Person.
+ * @author bruce phillips
+ *
+ */
+public class EditAction extends ActionSupport {
+       
+       private static final long serialVersionUID = 1L;
+       
+       private EditService editService = new EditServiceInMemory();
+       
+       private Person personBean;
+       
+       private String [] sports = {"football", "baseball", "basketball" };
+       
+       private String [] genders = {"male", "female", "not sure" };
+       
+       private List<State> states ;
+
+       private String [] carModelsAvailable = 
{"Ford","Chrysler","Toyota","Nissan"};
+
+       public String execute() throws Exception {
+               
+           editService.savePerson( getPersonBean() );
+               
+               return SUCCESS;
+               
+       }
+       
+       
+       public String input() throws Exception {
+               
+               setPersonBean( editService.getPerson() );
+               
+               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;
+       }
+
+}

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/themes-override/src/main/java/org/apache/struts/edit/model/Person.java
----------------------------------------------------------------------
diff --git 
a/themes-override/src/main/java/org/apache/struts/edit/model/Person.java 
b/themes-override/src/main/java/org/apache/struts/edit/model/Person.java
new file mode 100644
index 0000000..392a8de
--- /dev/null
+++ b/themes-override/src/main/java/org/apache/struts/edit/model/Person.java
@@ -0,0 +1,96 @@
+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;
+ 
+
+    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() ) ;
+        
+    }
+}

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/themes-override/src/main/java/org/apache/struts/edit/model/State.java
----------------------------------------------------------------------
diff --git 
a/themes-override/src/main/java/org/apache/struts/edit/model/State.java 
b/themes-override/src/main/java/org/apache/struts/edit/model/State.java
new file mode 100644
index 0000000..bb927e1
--- /dev/null
+++ b/themes-override/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() ;
+               
+       }
+       
+
+}

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/themes-override/src/main/java/org/apache/struts/edit/service/EditService.java
----------------------------------------------------------------------
diff --git 
a/themes-override/src/main/java/org/apache/struts/edit/service/EditService.java 
b/themes-override/src/main/java/org/apache/struts/edit/service/EditService.java
new file mode 100644
index 0000000..a5b347b
--- /dev/null
+++ 
b/themes-override/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);
+
+}

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/themes-override/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java
----------------------------------------------------------------------
diff --git 
a/themes-override/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java
 
b/themes-override/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java
new file mode 100644
index 0000000..7638152
--- /dev/null
+++ 
b/themes-override/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java
@@ -0,0 +1,51 @@
+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.setSport("basketball");
+               person.setGender("not sure");
+               person.setResidency("KS");
+               person.setOver21(true);         
+               person.setCarModels( carModels);                
+
+       }
+
+       
+       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() );
+
+       }
+
+}

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/themes-override/src/main/resources/log4j.dtd
----------------------------------------------------------------------
diff --git a/themes-override/src/main/resources/log4j.dtd 
b/themes-override/src/main/resources/log4j.dtd
new file mode 100644
index 0000000..1aabd96
--- /dev/null
+++ b/themes-override/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
+>

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/themes-override/src/main/resources/log4j.xml
----------------------------------------------------------------------
diff --git a/themes-override/src/main/resources/log4j.xml 
b/themes-override/src/main/resources/log4j.xml
new file mode 100644
index 0000000..2100cb2
--- /dev/null
+++ b/themes-override/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> 
+

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/themes-override/src/main/resources/org/apache/struts/edit/action/EditAction.properties
----------------------------------------------------------------------
diff --git 
a/themes-override/src/main/resources/org/apache/struts/edit/action/EditAction.properties
 
b/themes-override/src/main/resources/org/apache/struts/edit/action/EditAction.properties
new file mode 100644
index 0000000..0f08667
--- /dev/null
+++ 
b/themes-override/src/main/resources/org/apache/struts/edit/action/EditAction.properties
@@ -0,0 +1,8 @@
+personBean.firstName=First name
+personBean.lastName=Last name
+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

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/themes-override/src/main/resources/struts.xml
----------------------------------------------------------------------
diff --git a/themes-override/src/main/resources/struts.xml 
b/themes-override/src/main/resources/struts.xml
new file mode 100644
index 0000000..5c37a7b
--- /dev/null
+++ b/themes-override/src/main/resources/struts.xml
@@ -0,0 +1,30 @@
+<?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" />
+    <constant name="struts.ui.templateDir" value="WEB-INF/template"/>
+
+       <package name="basicstruts2" extends="struts-default">
+
+        <!-- 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="success">/thankyou.jsp</result>
+           </action>
+
+       </package>
+
+</struts>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/themes-override/src/main/webapp/META-INF/MANIFEST.MF
----------------------------------------------------------------------
diff --git a/themes-override/src/main/webapp/META-INF/MANIFEST.MF 
b/themes-override/src/main/webapp/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..254272e
--- /dev/null
+++ b/themes-override/src/main/webapp/META-INF/MANIFEST.MF
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path: 
+

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/themes-override/src/main/webapp/WEB-INF/template/simple/a-close.ftl
----------------------------------------------------------------------
diff --git 
a/themes-override/src/main/webapp/WEB-INF/template/simple/a-close.ftl 
b/themes-override/src/main/webapp/WEB-INF/template/simple/a-close.ftl
new file mode 100644
index 0000000..84b5aae
--- /dev/null
+++ b/themes-override/src/main/webapp/WEB-INF/template/simple/a-close.ftl
@@ -0,0 +1,45 @@
+<#--
+/*
+ * $Id$
+ *
+ * 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.
+ */
+-->
+<a<#rt/>
+<#if parameters.id?if_exists != "">
+ id="${parameters.id?html}"<#rt/>
+</#if>
+<#if parameters.href?if_exists != "">
+ href="${parameters.href}"<#rt/>
+</#if>
+<#if parameters.tabindex??>
+ tabindex="${parameters.tabindex?html}"<#rt/>
+</#if>
+<#if parameters.cssClass??>
+ class="${parameters.cssClass?html}"<#rt/>
+</#if>
+<#if parameters.cssStyle??>
+ style="${parameters.cssStyle?html}"<#rt/>
+</#if>
+<#if parameters.title??>
+ title="${parameters.title?html}"<#rt/>
+</#if>
+<#include 
"/${parameters.templateDir}/${parameters.expandTheme}/scripting-events.ftl" />
+<#include 
"/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" />
+<#include 
"/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />
+>${parameters.body}</a>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/themes-override/src/main/webapp/WEB-INF/template/simple/a.ftl
----------------------------------------------------------------------
diff --git a/themes-override/src/main/webapp/WEB-INF/template/simple/a.ftl 
b/themes-override/src/main/webapp/WEB-INF/template/simple/a.ftl
new file mode 100644
index 0000000..dcf27d2
--- /dev/null
+++ b/themes-override/src/main/webapp/WEB-INF/template/simple/a.ftl
@@ -0,0 +1,22 @@
+<#--
+/*
+ * $Id$
+ *
+ * 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.
+ */
+-->
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/themes-override/src/main/webapp/WEB-INF/template/simple/actionerror.ftl
----------------------------------------------------------------------
diff --git 
a/themes-override/src/main/webapp/WEB-INF/template/simple/actionerror.ftl 
b/themes-override/src/main/webapp/WEB-INF/template/simple/actionerror.ftl
new file mode 100644
index 0000000..6563876
--- /dev/null
+++ b/themes-override/src/main/webapp/WEB-INF/template/simple/actionerror.ftl
@@ -0,0 +1,43 @@
+<#--
+/*
+ * $Id$
+ *
+ * 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.
+ */
+-->
+<#if (actionErrors?? && actionErrors?size > 0)>
+       <ul<#rt/>
+<#if parameters.id?if_exists != "">
+ id="${parameters.id?html}"<#rt/>
+</#if>            
+<#if parameters.cssClass??>
+ class="${parameters.cssClass?html}"<#rt/>
+<#else>
+ class="errorMessage"<#rt/>
+</#if>
+<#if parameters.cssStyle??>
+ style="${parameters.cssStyle?html}"<#rt/>
+</#if>
+>
+       <#list actionErrors as error>
+               <#if error?if_exists != "">
+            <li><span><#if 
parameters.escape>${error!?html}<#else>${error!}</#if></span><#rt/></li><#rt/>
+        </#if>
+       </#list>
+       </ul>
+</#if>
\ No newline at end of file

Reply via email to