Hi.

I am upgrading from Struts 2.0.11 to 2.1.6, which mostly works as it should thanks to the migration guide [1]. A couple of things elude me, though:

1) I am not able to get fetch static files from dojo. They are supposed to be in the classpath per default [2], but the /struts/dojo/struts_dojo.js path only gives me a 404. These files are in the struts2-dojo-plugin jar, and the jar is included in my War (under WEB-INF/lib/)

2) I also get NullPointers in com.opensymphony.xwork2.util.TextParseUtil.java (155) and com.opensymphony.xwork2.util.LocalizedTextUtil.findText (318) when accessing certain pages. It seems that it's unable to fetch the strings in under WEB-INF/classes/my/app/package.properties

Best regards,
Henrik

[1] http://cwiki.apache.org/S2WIKI/troubleshooting-guide-migrating-from-struts-20x-to-21x.html
[2] http://struts.apache.org/2.x/docs/configuration-files.html

<?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="my.app" namespace="/my-app" extends="struts-default">
        <interceptors>
            <interceptor name="login" class="my.app.LoginInterceptor"/>
            <!-- interceptor name="ssl" class="my.app.SSLInterceptor"/ -->

            <interceptor-stack name="defaultLoginStack">
                <!--  interceptor-ref name="ssl"/ -->
                <!-- Our SSLInterceptor -->
                <interceptor-ref name="servletConfig"/>
                <interceptor-ref name="params"/>
                <interceptor-ref name="login"/>
                <!-- Our LoginInterceptor -->
                <interceptor-ref name="prepare"/>
                <interceptor-ref name="chain"/>
                <interceptor-ref name="modelDriven"/>
                <interceptor-ref name="fileUpload"/>
                <interceptor-ref name="staticParams"/>
                <interceptor-ref name="params"/>
                <interceptor-ref name="conversionError"/>
                <interceptor-ref name="validation"/>
                <interceptor-ref name="workflow"/>
            </interceptor-stack>

            <interceptor-stack name="defaultInsecureStack">
                <!--  interceptor-ref name="ssl"/ -->
                <!-- Our SSLInterceptor -->
                <interceptor-ref name="servletConfig"/>
                <interceptor-ref name="params"/>
                <interceptor-ref name="prepare"/>
                <interceptor-ref name="chain"/>
                <interceptor-ref name="modelDriven"/>
                <interceptor-ref name="fileUpload"/>
                <interceptor-ref name="staticParams"/>
                <interceptor-ref name="params"/>
                <interceptor-ref name="conversionError"/>
                <interceptor-ref name="validation"/>
                <interceptor-ref name="workflow"/>
            </interceptor-stack>

        </interceptors>

        <default-interceptor-ref name="defaultLoginStack"/>

        <global-results>
            <result name="login">/my-app/Login.jsp</result>
            <result name="login-success">/my-app/LoginSuccess.jsp</result>
        </global-results>

        <!-- we could have used the catchall (*) action here, but specify it
               explicitly so that we can use defaultInsecureStack -->
        <action name="Dummy" class="my.app.my-appSupport">
            <result>/my-app/Dummy.jsp</result>
            <interceptor-ref name="defaultInsecureStack"/>
        </action>

        <!-- action name="Login_*" method="{1}" class="my.app.Login">
            <result type="redirect-action">AboutOTTO</result>
            <result name="input">/my-app/Login.jsp</result>
          </action -->

        <action name="Login" class="my.app.Login">
            <result>/my-app/Login.jsp</result>
            <result name="input">/my-app/Login.jsp</result>
        </action>

        <action name="AboutOTTO" class="my.app.AboutOTTO">
            <result>/my-app/AboutOTTO.jsp</result>
            <interceptor-ref name="defaultInsecureStack"/>
        </action>

        <action name="Hellomy-app" class="my.app.Hellomy-app">
            <result>/my-app/Hellomy-app.jsp</result>
            <interceptor-ref name="defaultInsecureStack"/>
        </action>

        <action name="Welcome" class="my.app.Hellomy-app">
            <result>/my-app/Welcome.jsp</result>
            <interceptor-ref name="defaultInsecureStack"/>
        </action>

        <action name="Home" class="my.app.Home">
            <result>/my-app/LoginSuccess.jsp</result>
        </action>

        <action name="Logout" class="my.app.Logout">
            <result>/my-app/Logout.jsp</result>
        </action>
        <action name="ShowActivate" class="my.app.Activatemy-app">
            <param name="activationCode">=${activationCode}</param>
            <result>/my-app/activate.jsp</result>
            <interceptor-ref name="defaultInsecureStack"/>
        </action>
        <action name="Activate" class="my.app.Activatemy-app" method="activate">
            <result name="input" type="chain">ShowActivate</result>
            <result name="success">/my-app/activate_success.jsp</result>
            <interceptor-ref name="defaultInsecureStack"/>
        </action>

        <action name="Showmy-appSupport" class="my.app.my-appSupport">
            <result>/my-app/my-app_support.jsp</result>
            <result name="input">/my-app/my-app_support.jsp</result>
            <interceptor-ref name="defaultInsecureStack"/>
        </action>
        
        <action name="my-appSupport" class="my.app.my-appSupport" method="doSend">
        	<result name="input" type="chain">Showmy-appSupport</result>
            <result name="success" type="redirectAction">my-appComplete</result>
            <interceptor-ref name="defaultInsecureStack"/>
            
        </action>
        
        <action name="my-appComplete" class="my.app.my-appSupport">
            <result>/my-app/my-app_support_success.jsp</result>
            <interceptor-ref name="defaultInsecureStack"/>
        </action>
        
        <action name="ShowRegister" class="my.app.Register">
            <result>/my-app/Register.jsp</result>
            <result name="input">/my-app/Register.jsp</result>
            <interceptor-ref name="defaultInsecureStack"/>
        </action>

        <action name="Register" class="my.app.Register" method="register">
            <result name="input" type="chain">ShowRegister</result>
            <result name="success" type="redirectAction">RegisterComplete</result>
            <interceptor-ref name="defaultInsecureStack"/>
        </action>

        <action name="RegisterComplete" class="my.app.Register" method="complete">
            <result>/my-app/SuccessfullRegistration.jsp</result>
            <interceptor-ref name="defaultInsecureStack"/>
        </action>

        <action name="ShowTrackingcodes" class="my.app.Trackingcodes">
            <result>/my-app/Trackingcodes.jsp</result>
        </action>

        <action name="DeleteTrackingCode" class="my.app.Trackingcodes" method="doDelete">
            <result name="success" type="redirectAction">ShowTrackingcodes</result>
            <result name="error" type="redirectAction">ShowTrackingcodes</result>
        </action>

        <action name="AddCustomTrackingcode" class="my.app.Trackingcodes" method="add">
            <result name="input" type="chain">ShowTrackingcodes</result>
            <result name="success" type="redirectAction">ShowTrackingcodes</result>
        </action>

        <action name="ViewPlayerReport" class="my.app.my-appUserReports">
            <result>/my-app/playerReport.jsp</result>
        </action>

        <action name="BannerURL" class="my.app.BannerURL">
            <result>/my-app/BannerURL.jsp</result>
            <result name="error" type="redirectAction">ShowTrackingcodes</result>
        </action>

        <!-- <action name="Withdraw*" class="my.app.withdraw.Withdraw">
            <result>/my-app/withdraw{1}.jsp</result>
        </action> -->
        
        <action name="Withdraw" class="my.app.withdraw.Withdraw" method="showWithdraw">
            <result>/my-app/withdraw.jsp</result>
        </action>
        <action name="Withdraw_show_validation" class="my.app.withdraw.Withdraw">
            <result>/my-app/withdraw.jsp</result>
        </action>
        <action name="Withdraw_details" class="my.app.withdraw.Withdraw">
            <result>/my-app/withdraw_details.jsp</result>
        </action>
        <action name="Withdraw_validate" class="my.app.withdraw.Withdraw" method="validateMethod">
            <result name="success" type="redirectAction">Withdraw_details</result>
            <result name="error" type="redirectAction">Withdraw_show_validation</result>
        </action>
        <action name="Withdraw_validate_attributes" class="my.app.withdraw.Withdraw" method="validateAttributes">
            <result name="success">/my-app/withdraw_show_confirm.jsp</result>
            <result name="error" type="redirectAction">Withdraw_details</result>
        </action>
        <action name="RequestWithdraw" class="my.app.withdraw.Withdraw" method="requestPayout">
            <result>/my-app/withdraw_complete.jsp</result>
            <result name="error" type="redirectAction">Withdraw_validate_attributes</result>
        </action>



        <action name="ShowTransactions" class="my.app.Transactions">
            <result name="input">/my-app/view_transactions.jsp</result>
            <result name="success">/my-app/view_transactions.jsp</result>
        </action>
        
        <action name="ShowCommissions" class="my.app.Commissions">
            <result name="input">/my-app/view_commissions.jsp</result>
            <result name="success">/my-app/view_commissions.jsp</result>
        </action>
        
        <action name="ShowCommissionTickets" class="my.app.CommissionTickets">
            <result name="input">/my-app/view_commission_tickets.jsp</result>
            <result name="success">/my-app/view_commission_tickets.jsp</result>
        </action>        
        
        <action name="ShowWithdrawals" class="my.app.withdraw.Withdrawals">
            <result name="input">/my-app/view_withdrawals.jsp</result>
            <result name="success">/my-app/view_withdrawals.jsp</result>
        </action>
        
        
        <action name="ShowSettings" class="my.app.EditSettings">
             <result>/my-app/edit_settings.jsp</result>
             <result name="input">/my-app/edit_settings.jsp</result>
        </action>
       
        <action name="EditSettings" class="my.app.EditSettings" method="doEdit">
        		<result name="input" type="chain">ShowSettings</result>
            <result name="success" type="redirectAction">EditComplete</result>
        </action>
       
        <action name="EditComplete" class="my.app.EditSettings">
            <result name="success">/my-app/settings_changed.jsp</result>
        </action>

        <!-- Add your actions here -->
    </package>
</struts>
<?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.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="true" />
    <constant name="struts.action.extension" value="action" />

    <include file="my-app.xml"/>

    <!-- Add packages here -->

</struts>
<?xml version="1.0" encoding="UTF-8"?>

<web-app id="starter" 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>Struts 2 - Maven Archetype - Starter</display-name>
	
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath*:applicationContext*.xml</param-value>
	</context-param>
	
	<!-- Filters -->
	<filter>
        <filter-name>action2-cleanup</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
    </filter>
    <filter>
        <filter-name>sitemesh</filter-name>
        <filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class>
    </filter>
    <filter>
        <filter-name>action2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
        <!-- 
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
        -->
    </filter>

	
	<filter-mapping>
        <filter-name>action2-cleanup</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>sitemesh</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

	<filter-mapping>
	    <filter-name>action2</filter-name>
	    <url-pattern>*.action</url-pattern>
	</filter-mapping>
	
	<filter-mapping>
	    <filter-name>action2</filter-name>
	    <url-pattern>/struts/*</url-pattern>
	</filter-mapping>
	<!--     <filter-mapping>
        <filter-name>action2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
	 -->
	
	<!-- Listeners -->
	<listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    
    
    <!-- Servlets -->
    <servlet>
        <servlet-name>dwr</servlet-name>
        <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>true</param-value>
        </init-param>
    </servlet>
    <servlet>
    	<servlet-name>jspSupportServlet</servlet-name>
    	<servlet-class>org.apache.struts2.views.JspSupportServlet</servlet-class>
    	<load-on-startup>5</load-on-startup>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>dwr</servlet-name>
        <url-pattern>/dwr/*</url-pattern>
    </servlet-mapping>
    
    <servlet>
		<servlet-name>jcaptcha</servlet-name>
		<servlet-class>my.app.captcha.ImageCaptchaServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>


	<servlet-mapping>
		<servlet-name>jcaptcha</servlet-name>
		<url-pattern>/my-app-jcaptcha</url-pattern>
	</servlet-mapping>
    
    
    <!-- Welcome file lists -->
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.jsp</welcome-file>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>

</web-app>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org

Reply via email to