Apache Struts 2 Documentation > Home > Guides > Core Developers Guide > Configuration Files > struts.xml > struts.xml Examples
Added by Ted Husted, last edited by Ted Husted on Sep 10, 2006

An Example struts.xml Configuration File

struts.xml
Content pulled from external source. Click here to refresh.
<struts>
    <package name="person" extends="struts-default" namespace="/person">
        <action name="listPeople" class="org.apache.struts2.showcase.person.ListPeople">
            <interceptor-ref name="validationWorkflowStack"/>
            <result type="freemarker">listPeople.ftl</result>
        </action>

        <action name="newPerson!*" class="org.apache.struts2.showcase.person.CreatePerson" method="{1}">
            <result type="redirect">listPeople.action</result>
            <result name="input" type="freemarker">newPerson.ftl</result>
        </action>

        <action name="editPerson" class="org.apache.struts2.showcase.person.EditPerson">
            <result>editPeople.jsp</result>
        </action>

        <action name="doEditPerson" class="org.apache.struts2.showcase.person.EditPerson" method="save">
            <result name="error">editPeople.jsp</result>
            <result type="redirect">listPeople.action</result>
        </action>
    </package>
</struts>

For more about configuration details, see Struts Configuration Elements

The Struts 2 Document Type Definition (DTD)

Struts 2.0 DTD
Content pulled from external source. Click here to refresh.
<!--
   Struts configuration DTD.
   Use the following DOCTYPE
   
   <!DOCTYPE struts PUBLIC 
	"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
	"http://struts.apache.org/dtds/struts-2.0.dtd">
-->

<!ELEMENT struts (package|include)*>

<!ELEMENT package (result-types?, interceptors?, default-interceptor-ref?, default-action-ref?, global-results?, global-exception-mappings?, action*)>
<!ATTLIST package
    name CDATA #REQUIRED
    extends CDATA #IMPLIED
    namespace CDATA #IMPLIED
    abstract CDATA #IMPLIED
    externalReferenceResolver NMTOKEN #IMPLIED
>

<!ELEMENT result-types (result-type+)>

<!ELEMENT result-type (param*)>
<!ATTLIST result-type
    name CDATA #REQUIRED
    class CDATA #REQUIRED
    default (true|false) "false"
>

<!ELEMENT interceptors (interceptor|interceptor-stack)+>

<!ELEMENT interceptor (param*)>
<!ATTLIST interceptor
    name CDATA #REQUIRED
    class CDATA #REQUIRED
>

<!ELEMENT interceptor-stack (interceptor-ref+)>
<!ATTLIST interceptor-stack
    name CDATA #REQUIRED
>

<!ELEMENT interceptor-ref (param*)>
<!ATTLIST interceptor-ref
    name CDATA #REQUIRED
>

<!ELEMENT default-interceptor-ref (param*)>
<!ATTLIST default-interceptor-ref
    name CDATA #REQUIRED
>

<!ELEMENT default-action-ref (param*)>
<!ATTLIST default-action-ref
    name CDATA #REQUIRED
>

<!ELEMENT external-ref (#PCDATA)>
<!ATTLIST external-ref
    name NMTOKEN #REQUIRED
    required (true|false) "true"
>

<!ELEMENT global-results (result+)>

<!ELEMENT global-exception-mappings (exception-mapping+)>

<!ELEMENT action (param|result|interceptor-ref|exception-mapping|external-ref)*>
<!ATTLIST action
    name CDATA #REQUIRED
    class CDATA #IMPLIED
    method CDATA #IMPLIED
    converter CDATA #IMPLIED
>

<!ELEMENT param (#PCDATA)>
<!ATTLIST param
    name CDATA #REQUIRED
>

<!ELEMENT result (#PCDATA|param)*>
<!ATTLIST result
    name CDATA #IMPLIED
    type CDATA #IMPLIED
>

<!ELEMENT exception-mapping (#PCDATA|param)*>
<!ATTLIST exception-mapping
    name CDATA #IMPLIED
    exception CDATA #REQUIRED
    result CDATA #REQUIRED
>

<!ELEMENT include (#PCDATA)>
<!ATTLIST include
    file CDATA #REQUIRED
>