<?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.1.7.dtd">

<struts>

	<constant name="struts.devMode" value="false"></constant>
	<constant name="struts.objectFactory" value="spring"></constant>
	<constant name="struts.locale" value="zh_CN"></constant>
	<constant name="struts.i18n.encoding" value="utf-8"></constant>
	<constant name="struts.ui.theme" value="simple"></constant>
	<constant name="struts.custom.i18n.resources" value="globalMessages"></constant>
	<constant name="struts.multipart.maxSize" value="20971520" />

	<constant name="struts.convention.result.path" value="/pages/" />
	<constant name="struts.convention.classes.reload" value="true" />
	<constant name="struts.convention.default.parent.package"
		value="jeeweb-default" />


	<package name="jeeweb-default" extends="convention-default">
		<result-types>
			<result-type name="json"
				class="com.hcks.cmfds.core.web.PlainStringResult"></result-type>
		</result-types>

		<interceptors>

			<interceptor class="com.hcks.cmfds.core.security.AuthenticationInterceptor"
				name="authenticate" />

			 <interceptor-stack name="defaultStack">
			<!--	<interceptor-ref name="exception" />  
				<interceptor-ref name="servletConfig" />
				<interceptor-ref name="authenticate" />   
				<interceptor-ref name="checkbox" />
				<interceptor-ref name="params">
					<param name="excludeParams">.*\\u0023.*</param>
				</interceptor-ref>
				<interceptor-ref name="conversionError" />  
				<interceptor-ref name="chain" />
				<interceptor-ref name="validation">
					<param name="excludeMethods">input,back,cancel,browse,load,list</param>
				</interceptor-ref>
				<interceptor-ref name="workflow">
					<param name="excludeMethods">input,back,cancel,browse,load,list</param>
				</interceptor-ref>
 		-->
				<interceptor-ref name="exception" />
				<interceptor-ref name="alias" />
				<interceptor-ref name="servletConfig" />
				<interceptor-ref name="prepare" />
				<interceptor-ref name="i18n" />
				<interceptor-ref name="chain" />
				<interceptor-ref name="debugging" />
				<interceptor-ref name="profiling" />
				<interceptor-ref name="scopedModelDriven" />
				<interceptor-ref name="modelDriven" />
				<interceptor-ref name="fileUpload" />
				<interceptor-ref name="checkbox" />
				<interceptor-ref name="staticParams" />
				<interceptor-ref name="params"/>
				
			</interceptor-stack>


			<interceptor-stack name="fileUploadStack">
				<interceptor-ref name="fileUpload" />
				<interceptor-ref name="defaultStack" />
			</interceptor-stack>

			<interceptor-stack name="tokenStack">
				<interceptor-ref name="token" />
				<interceptor-ref name="defaultStack" />
			</interceptor-stack>

			<interceptor-stack name="uploadStack">
				<interceptor-ref name="fileUpload">
					<param name="maximumSize">20971520</param>  <!-- 20M=20*1024*1024 byte -->
				</interceptor-ref>
			</interceptor-stack>

		</interceptors>

		<global-results>
			<result name="errorHandler" type="chain">
				<param name="actionName">error</param>
				<param name="namespace">/</param>
			</result>
			<result name="loginpage" type="redirect">/loginpage.action${#request.returnURL}
			</result>
		</global-results>


		<global-exception-mappings>
			<exception-mapping
				exception="com.hcks.cmfds.core.security.AuthenticationException"
				result="invalid.permission" />
			<exception-mapping exception="java.lang.Throwable"
				result="errorHandler" />
		</global-exception-mappings>

	</package>

</struts>