You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by jo...@apache.org on 2015/06/12 19:40:27 UTC
struts-examples git commit: Refactor control tags struts example
Repository: struts-examples
Updated Branches:
refs/heads/master b9c38f587 -> 0cc2af802
Refactor control tags struts example
- log4j2 setup
- artifact name
- jetty plugin
Project: http://git-wip-us.apache.org/repos/asf/struts-examples/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts-examples/commit/0cc2af80
Tree: http://git-wip-us.apache.org/repos/asf/struts-examples/tree/0cc2af80
Diff: http://git-wip-us.apache.org/repos/asf/struts-examples/diff/0cc2af80
Branch: refs/heads/master
Commit: 0cc2af802860a5e851b96482eca1dab9350b799a
Parents: b9c38f5
Author: Johannes Geppert <jo...@apache.org>
Authored: Fri Jun 12 19:40:27 2015 +0200
Committer: Johannes Geppert <jo...@apache.org>
Committed: Fri Jun 12 19:40:27 2015 +0200
----------------------------------------------------------------------
control-tags/README.txt | 19 ++
control-tags/pom.xml | 39 ++++
.../apache/struts/edit/action/EditAction.java | 78 +++++++
.../org/apache/struts/edit/model/Person.java | 112 +++++++++
.../org/apache/struts/edit/model/State.java | 33 +++
.../apache/struts/edit/service/EditService.java | 11 +
.../edit/service/EditServiceInMemory.java | 49 ++++
control-tags/src/main/resources/log4j2.xml | 16 ++
.../edit/action/EditAction-validation.xml | 34 +++
.../struts/edit/action/EditAction.properties | 10 +
control-tags/src/main/resources/struts.xml | 30 +++
.../src/main/webapp/META-INF/MANIFEST.MF | 3 +
control-tags/src/main/webapp/WEB-INF/web.xml | 19 ++
control-tags/src/main/webapp/edit.jsp | 29 +++
control-tags/src/main/webapp/index.jsp | 15 ++
control-tags/src/main/webapp/thankyou.jsp | 52 +++++
control_tags/README.txt | 16 --
control_tags/pom.xml | 21 --
.../apache/struts/edit/action/EditAction.java | 96 --------
.../org/apache/struts/edit/model/Person.java | 121 ----------
.../org/apache/struts/edit/model/State.java | 39 ----
.../apache/struts/edit/service/EditService.java | 12 -
.../edit/service/EditServiceInMemory.java | 60 -----
control_tags/src/main/resources/log4j.dtd | 227 -------------------
control_tags/src/main/resources/log4j.xml | 28 ---
.../edit/action/EditAction-validation.xml | 34 ---
.../struts/edit/action/EditAction.properties | 10 -
control_tags/src/main/resources/struts.xml | 30 ---
.../src/main/webapp/META-INF/MANIFEST.MF | 3 -
control_tags/src/main/webapp/WEB-INF/web.xml | 19 --
control_tags/src/main/webapp/edit.jsp | 30 ---
control_tags/src/main/webapp/index.jsp | 16 --
control_tags/src/main/webapp/thankyou.jsp | 73 ------
pom.xml | 2 +-
34 files changed, 550 insertions(+), 836 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/0cc2af80/control-tags/README.txt
----------------------------------------------------------------------
diff --git a/control-tags/README.txt b/control-tags/README.txt
new file mode 100755
index 0000000..f1da262
--- /dev/null
+++ b/control-tags/README.txt
@@ -0,0 +1,19 @@
+This is the example project referred to in the
+Struts 2 documentation, Control Tags 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.
+
+Or you are using maven you can run command:
+mvn jetty:run
+
+In a web browser go to: http://localhost:8080/control-tags/index.action.
+
+You should see a web page with Welcome to Struts 2!
+
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/0cc2af80/control-tags/pom.xml
----------------------------------------------------------------------
diff --git a/control-tags/pom.xml b/control-tags/pom.xml
new file mode 100755
index 0000000..6eaf08e
--- /dev/null
+++ b/control-tags/pom.xml
@@ -0,0 +1,39 @@
+<?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>control-tags</artifactId>
+
+ <name>Control Tags</name>
+
+ <description>Control tags example application for the Struts 2 getting started tutorials</description>
+ <packaging>war</packaging>
+
+ <build>
+ <finalName>control-tags</finalName>
+ <plugins>
+ <plugin>
+ <groupId>org.mortbay.jetty</groupId>
+ <artifactId>jetty-maven-plugin</artifactId>
+ <version>8.1.16.v20140903</version>
+ <configuration>
+ <webApp>
+ <contextPath>/${artifactId}</contextPath>
+ </webApp>
+ <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>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/0cc2af80/control-tags/src/main/java/org/apache/struts/edit/action/EditAction.java
----------------------------------------------------------------------
diff --git a/control-tags/src/main/java/org/apache/struts/edit/action/EditAction.java b/control-tags/src/main/java/org/apache/struts/edit/action/EditAction.java
new file mode 100755
index 0000000..eaaf6f1
--- /dev/null
+++ b/control-tags/src/main/java/org/apache/struts/edit/action/EditAction.java
@@ -0,0 +1,78 @@
+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<>();
+ 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/0cc2af80/control-tags/src/main/java/org/apache/struts/edit/model/Person.java
----------------------------------------------------------------------
diff --git a/control-tags/src/main/java/org/apache/struts/edit/model/Person.java b/control-tags/src/main/java/org/apache/struts/edit/model/Person.java
new file mode 100755
index 0000000..ec80aaf
--- /dev/null
+++ b/control-tags/src/main/java/org/apache/struts/edit/model/Person.java
@@ -0,0 +1,112 @@
+package org.apache.struts.edit.model;
+
+import java.util.Arrays;
+
+
+
+/**
+ * Models a Person who registers.
+ * @author bruce phillips
+ *
+ */
+public class Person
+{
+ private String firstName;
+ private String lastName;
+ private String sport;
+ private String gender;
+ private String residency;
+ private boolean over21;
+ private String [] carModels;
+ private String email;
+ private String phoneNumber;
+
+ public String getFirstName()
+ {
+ return firstName;
+ }
+
+ public void setFirstName(String firstName)
+ {
+ this.firstName = firstName;
+ }
+
+ public String getLastName()
+ {
+ return lastName;
+ }
+
+ public void setLastName(String lastName)
+ {
+ this.lastName = lastName;
+ }
+
+ public void setSport(String sport) {
+ this.sport = sport;
+ }
+
+ public void setGender(String gender) {
+ this.gender = gender;
+ }
+
+ public String getGender() {
+ return gender;
+ }
+
+ public String getSport() {
+ return sport;
+ }
+
+ public void setResidency(String residency) {
+ this.residency = residency;
+ }
+
+ public String getResidency() {
+ return residency;
+ }
+
+ public void setOver21(boolean over21) {
+ this.over21 = over21;
+ }
+
+ public boolean isOver21() {
+ return over21;
+ }
+
+ public void setCarModels(String [] carModels) {
+ this.carModels = carModels;
+ }
+
+ public String [] getCarModels() {
+ return carModels;
+ }
+
+ public String toString()
+ {
+ return "First Name: " + getFirstName() + " | " +
+ " Last Name: " + getLastName() + " | " +
+ " Favorite Sport: " + getSport() + " | " +
+ " Gender: " + getGender() + " | " +
+ " Residency: " + getResidency() + " | " +
+ " Over 21: " + isOver21() + " | " +
+ " Car models: " + Arrays.asList( getCarModels() ) + " | " +
+ " Email: " + getEmail() + " | " +
+ " Phone: " + getPhoneNumber();
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setPhoneNumber(String phoneNumber) {
+ this.phoneNumber = phoneNumber;
+ }
+
+ public String getPhoneNumber() {
+ return phoneNumber;
+ }
+}
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/0cc2af80/control-tags/src/main/java/org/apache/struts/edit/model/State.java
----------------------------------------------------------------------
diff --git a/control-tags/src/main/java/org/apache/struts/edit/model/State.java b/control-tags/src/main/java/org/apache/struts/edit/model/State.java
new file mode 100755
index 0000000..97109dc
--- /dev/null
+++ b/control-tags/src/main/java/org/apache/struts/edit/model/State.java
@@ -0,0 +1,33 @@
+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/0cc2af80/control-tags/src/main/java/org/apache/struts/edit/service/EditService.java
----------------------------------------------------------------------
diff --git a/control-tags/src/main/java/org/apache/struts/edit/service/EditService.java b/control-tags/src/main/java/org/apache/struts/edit/service/EditService.java
new file mode 100755
index 0000000..5b36bf5
--- /dev/null
+++ b/control-tags/src/main/java/org/apache/struts/edit/service/EditService.java
@@ -0,0 +1,11 @@
+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/0cc2af80/control-tags/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java
----------------------------------------------------------------------
diff --git a/control-tags/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java b/control-tags/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java
new file mode 100755
index 0000000..bf2d188
--- /dev/null
+++ b/control-tags/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java
@@ -0,0 +1,49 @@
+package org.apache.struts.edit.service;
+
+
+
+import org.apache.struts.edit.model.Person;
+
+/**
+ * Implement Services needed to edit and save
+ * a Person object's state. In this implementation
+ * the Person object's state is stored in memory
+ * @author brucephillips
+ *
+ */
+
+public class EditServiceInMemory implements EditService {
+
+ private static Person person ;
+ private static String [] carModels = {"Ford","Nissan"};
+
+ static {
+ person = new Person();
+ person.setFirstName("Bruce");
+ person.setLastName("Phillips");
+ person.setEmail("bphillips@ku.edu");
+ person.setSport("basketball");
+ person.setGender("not sure");
+ person.setResidency("KS");
+ person.setOver21(true);
+ person.setCarModels( carModels);
+ person.setPhoneNumber("123-456-9999");
+ }
+
+ public Person getPerson() {
+ return EditServiceInMemory.person;
+ }
+
+ public void savePerson(Person personBean) {
+ EditServiceInMemory.person.setFirstName(personBean.getFirstName() );
+ EditServiceInMemory.person.setLastName(personBean.getLastName() );
+ EditServiceInMemory.person.setSport(personBean.getSport() );
+ EditServiceInMemory.person.setGender( personBean.getGender() );
+ EditServiceInMemory.person.setResidency( personBean.getResidency() );
+ EditServiceInMemory.person.setOver21( personBean.isOver21() );
+ EditServiceInMemory.person.setCarModels(personBean.getCarModels() );
+ EditServiceInMemory.person.setEmail( personBean.getEmail() );
+ EditServiceInMemory.person.setPhoneNumber( personBean.getPhoneNumber() );
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/0cc2af80/control-tags/src/main/resources/log4j2.xml
----------------------------------------------------------------------
diff --git a/control-tags/src/main/resources/log4j2.xml b/control-tags/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..d7c09f9
--- /dev/null
+++ b/control-tags/src/main/resources/log4j2.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration>
+ <Appenders>
+ <Console name="STDOUT" target="SYSTEM_OUT">
+ <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
+ </Console>
+ </Appenders>
+ <Loggers>
+ <Logger name="com.opensymphony.xwork2" level="info"/>
+ <Logger name="org.apache.struts2" level="info"/>
+ <Logger name="org.apache.struts2.edit" level="debug"/>
+ <Root level="warn">
+ <AppenderRef ref="STDOUT"/>
+ </Root>
+ </Loggers>
+</Configuration>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/0cc2af80/control-tags/src/main/resources/org/apache/struts/edit/action/EditAction-validation.xml
----------------------------------------------------------------------
diff --git a/control-tags/src/main/resources/org/apache/struts/edit/action/EditAction-validation.xml b/control-tags/src/main/resources/org/apache/struts/edit/action/EditAction-validation.xml
new file mode 100755
index 0000000..a52f403
--- /dev/null
+++ b/control-tags/src/main/resources/org/apache/struts/edit/action/EditAction-validation.xml
@@ -0,0 +1,34 @@
+<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN"
+ "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
+<validators>
+ <validator type="requiredstring">
+ <param name="fieldname">personBean.firstName</param>
+ <message>First name is required.</message>
+ </validator>
+ <validator type="requiredstring">
+ <param name="fieldname">personBean.lastName</param>
+ <message>Last name is required.</message>
+ </validator>
+ <validator type="requiredstring">
+ <param name="fieldname">personBean.email</param>
+ <message>Email address is required.</message>
+ </validator>
+ <validator type="email">
+ <param name="fieldname">personBean.email</param>
+ <message>Email address not valid.</message>
+ </validator>
+ <validator type="requiredstring">
+ <param name="fieldname">personBean.phoneNumber</param>
+ <message>Phone number is required.</message>
+ </validator>
+<validator type="regex">
+ <param name="fieldname">personBean.phoneNumber</param>
+ <param name="regex"><![CDATA[\d{3}-\d{3}-\d{4}]]></param>
+ <message>Phone number must be entered as 999-999-9999.</message>
+</validator>
+<validator type="fieldexpression">
+ <param name="fieldname">personBean.carModels</param>
+ <param name="expression"><![CDATA[personBean.carModels.length > 0]]></param>
+ <message>You must select at least one car model.</message>
+</validator>
+</validators>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/0cc2af80/control-tags/src/main/resources/org/apache/struts/edit/action/EditAction.properties
----------------------------------------------------------------------
diff --git a/control-tags/src/main/resources/org/apache/struts/edit/action/EditAction.properties b/control-tags/src/main/resources/org/apache/struts/edit/action/EditAction.properties
new file mode 100755
index 0000000..1b36d51
--- /dev/null
+++ b/control-tags/src/main/resources/org/apache/struts/edit/action/EditAction.properties
@@ -0,0 +1,10 @@
+personBean.firstName=First name
+personBean.lastName=Last name
+personBean.email=Email address
+personBean.phoneNumber=Phone number (999-999-9999)
+personBean.sport=Favorite sport
+personBean.gender=Gender
+personBean.residency=State resident
+personBean.over21=21 or older
+personBean.carModels=Car models owned
+submit=Save Changes
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/0cc2af80/control-tags/src/main/resources/struts.xml
----------------------------------------------------------------------
diff --git a/control-tags/src/main/resources/struts.xml b/control-tags/src/main/resources/struts.xml
new file mode 100755
index 0000000..893019d
--- /dev/null
+++ b/control-tags/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" />
+
+ <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="input">/edit.jsp</result>
+ <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/0cc2af80/control-tags/src/main/webapp/META-INF/MANIFEST.MF
----------------------------------------------------------------------
diff --git a/control-tags/src/main/webapp/META-INF/MANIFEST.MF b/control-tags/src/main/webapp/META-INF/MANIFEST.MF
new file mode 100755
index 0000000..254272e
--- /dev/null
+++ b/control-tags/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/0cc2af80/control-tags/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/control-tags/src/main/webapp/WEB-INF/web.xml b/control-tags/src/main/webapp/WEB-INF/web.xml
new file mode 100755
index 0000000..3ec15e2
--- /dev/null
+++ b/control-tags/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
+<display-name>control_tags</display-name>
+ <welcome-file-list>
+ <welcome-file>index.jsp</welcome-file>
+ </welcome-file-list>
+
+
+ <filter>
+ <filter-name>struts2</filter-name>
+ <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
+ </filter>
+
+ <filter-mapping>
+ <filter-name>struts2</filter-name>
+ <url-pattern>/*</url-pattern>
+ </filter-mapping>
+
+</web-app>
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/0cc2af80/control-tags/src/main/webapp/edit.jsp
----------------------------------------------------------------------
diff --git a/control-tags/src/main/webapp/edit.jsp b/control-tags/src/main/webapp/edit.jsp
new file mode 100755
index 0000000..6aaa7ae
--- /dev/null
+++ b/control-tags/src/main/webapp/edit.jsp
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+ <meta charset="UTF-8">
+ <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>
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/0cc2af80/control-tags/src/main/webapp/index.jsp
----------------------------------------------------------------------
diff --git a/control-tags/src/main/webapp/index.jsp b/control-tags/src/main/webapp/index.jsp
new file mode 100755
index 0000000..70613c1
--- /dev/null
+++ b/control-tags/src/main/webapp/index.jsp
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
+<html>
+<head>
+ <meta charset="UTF-8">
+ <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>
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/0cc2af80/control-tags/src/main/webapp/thankyou.jsp
----------------------------------------------------------------------
diff --git a/control-tags/src/main/webapp/thankyou.jsp b/control-tags/src/main/webapp/thankyou.jsp
new file mode 100755
index 0000000..f186888
--- /dev/null
+++ b/control-tags/src/main/webapp/thankyou.jsp
@@ -0,0 +1,52 @@
+<!DOCTYPE html>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
+<html>
+<head>
+ <meta charset="UTF-8">
+ <title>Update Successful</title>
+</head>
+
+<body>
+<h1>Updated Information</h1>
+
+<p>Your information: <s:property value="personBean"/></p>
+
+<s:if test="personBean.over21">
+ <p>You are old enough to vote!</p>
+</s:if>
+<s:else>
+ <p>You are NOT old enough to vote.</p>
+</s:else>
+
+<s:if test="personBean.carModels.length > 1">
+<p>Car models
+</s:if>
+<s:else>
+
+<p>Car model
+</s:else>
+ selected: </p>
+<table style="margin-left:15px">
+ <s:iterator value="personBean.carModels">
+ <tr>
+ <td><s:property/></td>
+ </tr>
+ </s:iterator>
+</table>
+
+<p>States you may have selected:</p>
+
+<table style="margin-left:15px">
+ <s:iterator value="states">
+ <tr>
+ <td><s:property value="stateAbbr"/></td>
+ <td><s:property value="stateName"/></td>
+ </tr>
+ </s:iterator>
+</table>
+
+<p><a href="<s:url action='index' />">Return to home page</a>.</p>
+
+</body>
+</html>
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/0cc2af80/control_tags/README.txt
----------------------------------------------------------------------
diff --git a/control_tags/README.txt b/control_tags/README.txt
deleted file mode 100755
index 1879587..0000000
--- a/control_tags/README.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-This is the example project referred to in the
-Struts 2 documentation, Control Tags 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/control_tags/index.action.
-
-You should see a web page with Welcome to Struts 2!
-
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/0cc2af80/control_tags/pom.xml
----------------------------------------------------------------------
diff --git a/control_tags/pom.xml b/control_tags/pom.xml
deleted file mode 100755
index bcdd6c8..0000000
--- a/control_tags/pom.xml
+++ /dev/null
@@ -1,21 +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>control_tags</artifactId>
-
- <name>Control Tags</name>
-
- <description>Control tags example application for the
- Struts 2 getting started tutorials</description>
- <packaging>war</packaging>
-
- <build>
- <finalName>control_tags</finalName>
- </build>
-</project>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/0cc2af80/control_tags/src/main/java/org/apache/struts/edit/action/EditAction.java
----------------------------------------------------------------------
diff --git a/control_tags/src/main/java/org/apache/struts/edit/action/EditAction.java b/control_tags/src/main/java/org/apache/struts/edit/action/EditAction.java
deleted file mode 100755
index aa07ff2..0000000
--- a/control_tags/src/main/java/org/apache/struts/edit/action/EditAction.java
+++ /dev/null
@@ -1,96 +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 org.apache.struts.edit.service.EditServiceInMemory;
-
-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 = 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/0cc2af80/control_tags/src/main/java/org/apache/struts/edit/model/Person.java
----------------------------------------------------------------------
diff --git a/control_tags/src/main/java/org/apache/struts/edit/model/Person.java b/control_tags/src/main/java/org/apache/struts/edit/model/Person.java
deleted file mode 100755
index 2d127eb..0000000
--- a/control_tags/src/main/java/org/apache/struts/edit/model/Person.java
+++ /dev/null
@@ -1,121 +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;
- private String email;
- private String phoneNumber;
-
-
-
- public String getFirstName()
- {
- return firstName;
- }
-
- public void setFirstName(String firstName)
- {
- this.firstName = firstName;
- }
-
- public String getLastName()
- {
- return lastName;
- }
-
- public void setLastName(String lastName)
- {
- this.lastName = lastName;
- }
-
-
-
-
- public void setSport(String sport) {
- this.sport = sport;
- }
-
- public void setGender(String gender) {
- this.gender = gender;
- }
-
- public String getGender() {
- return gender;
- }
-
- public String getSport() {
- return sport;
- }
-
- public void setResidency(String residency) {
- this.residency = residency;
- }
-
- public String getResidency() {
- return residency;
- }
-
- public void setOver21(boolean over21) {
- this.over21 = over21;
- }
-
- public boolean isOver21() {
- return over21;
- }
-
- public void setCarModels(String [] carModels) {
- this.carModels = carModels;
- }
-
- public String [] getCarModels() {
- return carModels;
- }
-
- public String toString()
- {
- return "First Name: " + getFirstName() + " | " +
- " Last Name: " + getLastName() + " | " +
- " Favorite Sport: " + getSport() + " | " +
- " Gender: " + getGender() + " | " +
- " Residency: " + getResidency() + " | " +
- " Over 21: " + isOver21() + " | " +
- " Car models: " + Arrays.asList( getCarModels() ) + " | " +
- " Email: " + getEmail() + " | " +
- " Phone: " + getPhoneNumber();
-
-
- }
-
- public void setEmail(String email) {
- this.email = email;
- }
-
- public String getEmail() {
- return email;
- }
-
- public void setPhoneNumber(String phoneNumber) {
- this.phoneNumber = phoneNumber;
- }
-
- public String getPhoneNumber() {
- return phoneNumber;
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/0cc2af80/control_tags/src/main/java/org/apache/struts/edit/model/State.java
----------------------------------------------------------------------
diff --git a/control_tags/src/main/java/org/apache/struts/edit/model/State.java b/control_tags/src/main/java/org/apache/struts/edit/model/State.java
deleted file mode 100755
index bb927e1..0000000
--- a/control_tags/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/0cc2af80/control_tags/src/main/java/org/apache/struts/edit/service/EditService.java
----------------------------------------------------------------------
diff --git a/control_tags/src/main/java/org/apache/struts/edit/service/EditService.java b/control_tags/src/main/java/org/apache/struts/edit/service/EditService.java
deleted file mode 100755
index f52e053..0000000
--- a/control_tags/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/0cc2af80/control_tags/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java
----------------------------------------------------------------------
diff --git a/control_tags/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java b/control_tags/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java
deleted file mode 100755
index 8fd35e2..0000000
--- a/control_tags/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java
+++ /dev/null
@@ -1,60 +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.setEmail("bphillips@ku.edu");
- person.setSport("basketball");
- person.setGender("not sure");
- person.setResidency("KS");
- person.setOver21(true);
- person.setCarModels( carModels);
- person.setPhoneNumber("123-456-9999");
-
-
-
- }
-
-
- public Person getPerson() {
-
- return EditServiceInMemory.person;
- }
-
-
- public void savePerson(Person personBean) {
-
- EditServiceInMemory.person.setFirstName(personBean.getFirstName() );
- EditServiceInMemory.person.setLastName(personBean.getLastName() );
- EditServiceInMemory.person.setSport(personBean.getSport() );
- EditServiceInMemory.person.setGender( personBean.getGender() );
- EditServiceInMemory.person.setResidency( personBean.getResidency() );
- EditServiceInMemory.person.setOver21( personBean.isOver21() );
- EditServiceInMemory.person.setCarModels(personBean.getCarModels() );
- EditServiceInMemory.person.setEmail( personBean.getEmail() );
- EditServiceInMemory.person.setPhoneNumber( personBean.getPhoneNumber() );
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/0cc2af80/control_tags/src/main/resources/log4j.dtd
----------------------------------------------------------------------
diff --git a/control_tags/src/main/resources/log4j.dtd b/control_tags/src/main/resources/log4j.dtd
deleted file mode 100755
index 1aabd96..0000000
--- a/control_tags/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/0cc2af80/control_tags/src/main/resources/log4j.xml
----------------------------------------------------------------------
diff --git a/control_tags/src/main/resources/log4j.xml b/control_tags/src/main/resources/log4j.xml
deleted file mode 100755
index 2100cb2..0000000
--- a/control_tags/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/0cc2af80/control_tags/src/main/resources/org/apache/struts/edit/action/EditAction-validation.xml
----------------------------------------------------------------------
diff --git a/control_tags/src/main/resources/org/apache/struts/edit/action/EditAction-validation.xml b/control_tags/src/main/resources/org/apache/struts/edit/action/EditAction-validation.xml
deleted file mode 100755
index a52f403..0000000
--- a/control_tags/src/main/resources/org/apache/struts/edit/action/EditAction-validation.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN"
- "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
-<validators>
- <validator type="requiredstring">
- <param name="fieldname">personBean.firstName</param>
- <message>First name is required.</message>
- </validator>
- <validator type="requiredstring">
- <param name="fieldname">personBean.lastName</param>
- <message>Last name is required.</message>
- </validator>
- <validator type="requiredstring">
- <param name="fieldname">personBean.email</param>
- <message>Email address is required.</message>
- </validator>
- <validator type="email">
- <param name="fieldname">personBean.email</param>
- <message>Email address not valid.</message>
- </validator>
- <validator type="requiredstring">
- <param name="fieldname">personBean.phoneNumber</param>
- <message>Phone number is required.</message>
- </validator>
-<validator type="regex">
- <param name="fieldname">personBean.phoneNumber</param>
- <param name="regex"><![CDATA[\d{3}-\d{3}-\d{4}]]></param>
- <message>Phone number must be entered as 999-999-9999.</message>
-</validator>
-<validator type="fieldexpression">
- <param name="fieldname">personBean.carModels</param>
- <param name="expression"><![CDATA[personBean.carModels.length > 0]]></param>
- <message>You must select at least one car model.</message>
-</validator>
-</validators>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/0cc2af80/control_tags/src/main/resources/org/apache/struts/edit/action/EditAction.properties
----------------------------------------------------------------------
diff --git a/control_tags/src/main/resources/org/apache/struts/edit/action/EditAction.properties b/control_tags/src/main/resources/org/apache/struts/edit/action/EditAction.properties
deleted file mode 100755
index 83f400a..0000000
--- a/control_tags/src/main/resources/org/apache/struts/edit/action/EditAction.properties
+++ /dev/null
@@ -1,10 +0,0 @@
-personBean.firstName=First name
-personBean.lastName=Last name
-personBean.email=Email address
-personBean.phoneNumber=Phone number (999-999-9999)
-personBean.sport=Favorite sport
-personBean.gender=Gender
-personBean.residency=State resident
-personBean.over21=21 or older
-personBean.carModels=Car models owned
-submit=Save Changes
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/0cc2af80/control_tags/src/main/resources/struts.xml
----------------------------------------------------------------------
diff --git a/control_tags/src/main/resources/struts.xml b/control_tags/src/main/resources/struts.xml
deleted file mode 100755
index 893019d..0000000
--- a/control_tags/src/main/resources/struts.xml
+++ /dev/null
@@ -1,30 +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="input">/edit.jsp</result>
- <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/0cc2af80/control_tags/src/main/webapp/META-INF/MANIFEST.MF
----------------------------------------------------------------------
diff --git a/control_tags/src/main/webapp/META-INF/MANIFEST.MF b/control_tags/src/main/webapp/META-INF/MANIFEST.MF
deleted file mode 100755
index 5e94951..0000000
--- a/control_tags/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/0cc2af80/control_tags/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/control_tags/src/main/webapp/WEB-INF/web.xml b/control_tags/src/main/webapp/WEB-INF/web.xml
deleted file mode 100755
index 3ec15e2..0000000
--- a/control_tags/src/main/webapp/WEB-INF/web.xml
+++ /dev/null
@@ -1,19 +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>control_tags</display-name>
- <welcome-file-list>
- <welcome-file>index.jsp</welcome-file>
- </welcome-file-list>
-
-
- <filter>
- <filter-name>struts2</filter-name>
- <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
- </filter>
-
- <filter-mapping>
- <filter-name>struts2</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
-
-</web-app>
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/0cc2af80/control_tags/src/main/webapp/edit.jsp
----------------------------------------------------------------------
diff --git a/control_tags/src/main/webapp/edit.jsp b/control_tags/src/main/webapp/edit.jsp
deleted file mode 100755
index 67a9901..0000000
--- a/control_tags/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/0cc2af80/control_tags/src/main/webapp/index.jsp
----------------------------------------------------------------------
diff --git a/control_tags/src/main/webapp/index.jsp b/control_tags/src/main/webapp/index.jsp
deleted file mode 100755
index 88209d8..0000000
--- a/control_tags/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/0cc2af80/control_tags/src/main/webapp/thankyou.jsp
----------------------------------------------------------------------
diff --git a/control_tags/src/main/webapp/thankyou.jsp b/control_tags/src/main/webapp/thankyou.jsp
deleted file mode 100755
index 1dac78d..0000000
--- a/control_tags/src/main/webapp/thankyou.jsp
+++ /dev/null
@@ -1,73 +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>
-
-<s:if test="personBean.over21">
-
- <p>You are old enough to vote!</p>
-
-</s:if>
-
-<s:else>
-
- <p>You are NOT old enough to vote.</p>
-
-</s:else>
-
-<s:if test="personBean.carModels.length > 1">
-
- <p>Car models
-
-</s:if>
-
-<s:else>
-
- <p>Car model
-
-
-</s:else>
-
-selected: </p>
-<table style="margin-left:15px">
-
- <s:iterator value="personBean.carModels">
-
- <tr><td><s:property /></td></tr>
-
- </s:iterator>
-
-
-</table>
-
-
-
-<p>States you may have selected:</p>
-
-<table style="margin-left:15px">
-
- <s:iterator value="states" >
-
- <tr><td><s:property value="stateAbbr" /></td> <td><s:property value="stateName" /></tr>
-
- </s:iterator>
-
-</table>
-
-
-<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/0cc2af80/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 852cff7..f3c75e3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -53,7 +53,7 @@
<module>debugging_struts</module>
<module>form_tags</module>
<module>form_xml_validation</module>
- <module>control_tags</module>
+ <module>control-tags</module>
<module>wildcard_method_selection</module>
<module>themes</module>
<module>spring_struts</module>