<?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.
 */
-->
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 6.0//EN"
	"https://struts.apache.org/dtds/struts-6.0.dtd">

<struts>

	<!-- ================================== -->
	<!-- === Package for ActionTag Demo === -->
	<!-- ================================== -->

	<package name="actionTag" extends="struts-default" namespace="/tags/non-ui/actionTag">
		<action name="showActionTagDemo" class="org.apache.struts2.showcase.tag.nonui.actiontag.ActionTagDemo" method="show">
			<result>/WEB-INF/tags/non-ui/actionTag/showActionTagDemo.jsp</result>
		</action>
		<action name="includePage" class="org.apache.struts2.showcase.tag.nonui.actiontag.ActionTagDemo" method="doInclude">
			<result>/WEB-INF/tags/non-ui/actionTag/includedPage.jsp</result>
		</action>
		<action name="includePage2">
			<result>/WEB-INF/tags/non-ui/actionTag/includedPage2.jsp</result>
		</action>
		<action name="includePage3">
			<result>/WEB-INF/tags/non-ui/actionTag/includedPage3.jsp</result>
		</action>
		<action name="lookAtSource">
			<result type="plainText">/WEB-INF/tags/non-ui/actionTag/showActionTagDemo.jsp</result>
		</action>
	</package>

	<!-- ==================================== -->
	<!-- === Package for IteratorGeneratorTag Demo === -->
	<!-- ==================================== -->

	<package name="iteratorGeneratorTag" extends="struts-default" namespace="/tags/non-ui/iteratorGeneratorTag">
		<action name="showGeneratorTagDemo" class="org.apache.struts2.showcase.tag.nonui.iteratortag.IteratorGeneratorTagDemo" method="input">
			<result>/WEB-INF/tags/non-ui/iteratorTag/showIteratorGeneratorTagDemo.jsp</result>
		</action>
		<action name="submitGeneratorTagDemo" class="org.apache.struts2.showcase.tag.nonui.iteratortag.IteratorGeneratorTagDemo" method="submit">
			<result name="input">/WEB-INF/tags/non-ui/iteratorTag/showIteratorGeneratorTagDemo.jsp</result>
			<result>/WEB-INF/tags/non-ui/iteratorTag/iteratorGeneratorTagDemoResult.jsp</result>
		</action>
	</package>


	<!-- ===================================== -->
	<!-- === Package for AppendIteratorTag Demo ===  -->
	<!-- ========================================== -->
	<package name="appendIteratorTag" extends="struts-default" namespace="/tags/non-ui/appendIteratorTag">
		<action name="showAppendTagDemo" class="org.apache.struts2.showcase.tag.nonui.iteratortag.AppendIteratorTagDemo" method="input">
			<result>/WEB-INF/tags/non-ui/iteratorTag/showAppendIteratorTagDemo.jsp</result>
		</action>
		<action name="submitAppendTagDemo" class="org.apache.struts2.showcase.tag.nonui.iteratortag.AppendIteratorTagDemo" method="submit">
			<result name="input">/WEB-INF/tags/non-ui/iteratorTag/showAppendIteratorTagDemo.jsp</result>
			<result>/WEB-INF/tags/non-ui/iteratorTag/appendIteratorTagDemoResult.jsp</result>
		</action>
	</package>


	<!-- ====================================== -->
	<!-- === Package for MergeIteratorTag Demo === -->
	<!-- ========================================= -->
	<package name="mergeIteratorTag" extends="struts-default" namespace="/tags/non-ui/mergeIteratorTag">
		<action name="showMergeTagDemo" class="org.apache.struts2.showcase.tag.nonui.iteratortag.MergeIteratorTagDemo" method="input">
			<result>/WEB-INF/tags/non-ui/iteratorTag/showMergeIteratorTagDemo.jsp</result>
		</action>
		<action name="submitMergeTagDemo" class="org.apache.struts2.showcase.tag.nonui.iteratortag.MergeIteratorTagDemo" method="submit">
			<result name="input">/WEB-INF/tags/non-ui/iteratorTag/showMergeIteratorTagDemo.jsp</result>
			<result>/WEB-INF/tags/non-ui/iteratorTag/mergeIteratorTagDemoResult.jsp</result>
		</action>
	</package>

	<!-- ============================================= -->
	<!-- === Package for SubsetIteratorTag Demo === -->
	<!-- =========================================== -->
	<package name="subsetIteratorTag" extends="struts-default" namespace="/tags/non-ui/subsetIteratorTag">
		<action name="showSubsetTagDemo" class="org.apache.struts2.showcase.tag.nonui.iteratortag.SubsetIteratorTagDemo" method="input">
			<result>/WEB-INF/tags/non-ui/iteratorTag/subsetIteratorTagDemo.jsp</result>
		</action>
		<action name="submitSubsetTagDemo" class="org.apache.struts2.showcase.tag.nonui.iteratortag.SubsetIteratorTagDemo" method="submit">
			<result name="input">/WEB-INF/tags/non-ui/iteratorTag/subsetIteratorTagDemo.jsp</result>
			<result>/WEB-INF/tags/non-ui/iteratorTag/subsetIteratorTagDemoResult.jsp</result>
		</action>
	</package>

	<!-- ========================================= -->
	<!-- === Package for Action Prefix Example === -->
	<!-- ========================================= -->
	<package name="actionPrefix" extends="struts-default" namespace="/tags/non-ui/actionPrefix">
		<action name="actionPrefixExampleUsingFreemarker">
			<result type="freemarker">/WEB-INF/tags/non-ui/actionPrefix/actionPrefixExample.ftl</result>
		</action>
		<action name="submit" class="org.apache.struts2.showcase.tag.nonui.actionPrefix.SubmitAction">
			<result type="freemarker">/WEB-INF/tags/non-ui/actionPrefix/normalSubmit.ftl</result>
		</action>
		<action name="submit" class="org.apache.struts2.showcase.tag.nonui.actionPrefix.SubmitAction" method="alternateMethod">
			<result name="methodPrefixResult" type="freemarker">/WEB-INF/tags/non-ui/actionPrefix/methodPrefix.ftl</result>
		</action>
		<action name="actionPrefix" class="org.apache.struts2.showcase.tag.nonui.actionPrefix.SubmitAction">
			<result type="freemarker">/WEB-INF/tags/non-ui/actionPrefix/actionPrefix.ftl</result>
		</action>
		<action name="redirectPrefix">
			<result type="freemarker">/WEB-INF/tags/non-ui/actionPrefix/redirectPrefix.ftl</result>
		</action>
		<action name="redirectActionPrefix">
			<result type="freemarker">/WEB-INF/tags/non-ui/actionPrefix/redirectActionPrefix.ftl</result>
		</action>
        <action name="redirectActionPrefixAction">
            <result type="redirect">redirectActionPrefix</result>
        </action>
		<action name="viewSource">
			<result type="plainText">/WEB-INF/tags/non-ui/actionPrefix/actionPrefixExample.ftl</result>
		</action>
	</package>

	<!--  ========================================== -->
	<!--  === Package for If Tag Test / Examples === -->
	<!--  ========================================== -->
	<package name="ifTagPackage" extends="struts-default" namespace="/tags/non-ui/ifTag">
		<action name="testIfTagJsp">
			<result>/WEB-INF/tags/non-ui/ifTag/testIf.jsp</result>
		</action>
		<action name="testIfTagFreemarker">
			<result type="freemarker">/WEB-INF/tags/non-ui/ifTag/testIf.ftl</result>
		</action>
	</package>

    <!--  ========================================== -->
    <!--  === Package for Debug Tag              === -->
    <!--  ========================================== -->
    <package name="debugTagPackage" extends="struts-default" namespace="/tags/non-ui">
        <action name="date">
            <result>/WEB-INF/tags/non-ui/date.jsp</result>
        </action>
		<action name="debugTagDemo" class="org.apache.struts2.showcase.tag.nonui.debugtag.DebugTagAction">
            <result>/WEB-INF/tags/non-ui/debug.jsp</result>
        </action>
    </package>
</struts>

