struts, spring integration is very cool

<?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>
	<package name="prc-buySellAvail" namespace="/1" extends="prc-root">
		<!-- Buy / Sell Availability starts here  -->
		<action name="rtrvCurrencies"
			class="com.db.cfc.pricing.action.BuySellAvailabilityAction" method="rtrvCurrencies">
			<interceptor-ref name="prcRootStack">
				<param name="scope.type">start</param>
				<param name="scope.session">masterProdList</param>
			</interceptor-ref>
			<result name="success" type="tiles">rtrvCurrencies</result>
		</action>
		
		<!-- jackie, retrieve denom list, ST -->
		<action name="rtrvCurrenciesDenom"
			class="com.db.cfc.pricing.action.BuySellAvailabilityAction" method="rtrvCurrenciesDenom">
			<interceptor-ref name="prcRootStack">
				<param name="scope.type">start</param>
				<param name="scope.session">prodDto</param>
			</interceptor-ref>
			<result name="success" type="tiles">rtrvCurrenciesDenom</result>
		</action>
		<!-- jackie, retrieve denom list, EN -->
		
		<action name="rtrvCcyList"
			class="com.db.cfc.pricing.action.BuySellAvailabilityAction" method="rtrvCcyList">
			<result name="success">/WEB-INF/jsp/availability/CurrencyList.jsp</result>
		</action>
		<action name="rtrvMetals"
			class="com.db.cfc.pricing.action.BuySellAvailabilityAction" method="rtrvMetals">
			<interceptor-ref name="prcRootStack">
				<param name="scope.type">start</param>
				<param name="scope.session">masterProdList</param>
			</interceptor-ref>
			<result name="success">/WEB-INF/jsp/availability/MetalSetup.jsp</result>
		</action>
		<action name="searchAvailMetals"
			class="com.db.cfc.pricing.action.BuySellAvailabilityAction" method="searchAvailMetals">
			<result name="success">/WEB-INF/jsp/availability/MetalList.jsp</result>
		</action>
		<action name="rtrvPendingProducts"
			class="com.db.cfc.pricing.action.BuySellAvailabilityAction" method="rtrvPendingProducts">
			<result name="success">/WEB-INF/jsp/availability/AuthorizeProducts.jsp</result>
		</action>
		
		<action name="populateMetalList" method="populateMetalList"
			class="com.db.cfc.pricing.action.BuySellAvailabilityAction">			
			<result name="success" type="json">
				<param name="root">productsList</param>
			</result>
		</action>
		<!-- Buy / Sell Availability starts here  -->
	</package>
	
	
	
	<package name="prc-buySellAvail-edit" namespace="/2" extends="prc-root">
		<action name="saveCurrencySettings"
			class="com.db.cfc.pricing.action.BuySellAvailabilityAction" method="saveCurrencySettings">
			<interceptor-ref name="prcRootStack">
				<param name="scope.session">masterProdList</param>
			</interceptor-ref>
			<result name="success">/WEB-INF/jsp/availability/CurrencySetup.jsp</result>
		</action>
		<action name="saveMetalSettings"
			class="com.db.cfc.pricing.action.BuySellAvailabilityAction" method="saveMetalSettings">
			<interceptor-ref name="prcRootStack">
				<param name="scope.session">masterProdList</param>
			</interceptor-ref>
			<result name="success">/WEB-INF/jsp/availability/MetalSetup.jsp</result>
		</action>
		<action name="approveProductSettings"
			class="com.db.cfc.pricing.action.BuySellAvailabilityAction" method="approveProductSettings">
			<result name="success">/WEB-INF/jsp/availability/PendingAuthConfirmation.jsp</result>
		</action>
		<action name="rejectProductSettings"
			class="com.db.cfc.pricing.action.BuySellAvailabilityAction" method="rejectProductSettings">
			<result name="success">/WEB-INF/jsp/availability/PendingAuthConfirmation.jsp</result>
		</action>
	</package>
	
	
</struts>

not only, the attributes of the action class, would be auto wired with spring beans.
besides, the attributes of the action class (never defined within spring), can be passed back to the struts.xml, utilizing this objects in session, or jsp.

i am to study the theory behind this.

======================================
Feb 17, 2011
The work behind this is, spring auto wiring + ScopeInterceptor(Strust2) + ServletConfigInterceptor(Struts2).