Chiu
Chiu

Reputation: 19

struts.xml namespace causes 404 not found page

I have the problem on struts.xml of Struts 2 web project.

I have the login page and after login, the URL will add /secure/*.action.

I tried to have two packages in struts.xml. One is normal / and second is /secure.

But it will cause 404 not found page after login.

If I make the second package also \ in namespace and call the membersite.action with only / namespace , it will be OK and successfully direct but with only /*.action in URL.

I need to have this URL /secure/*.action in infrastructure issue. Is there any hints?

    <package name="awip" namespace="/" extends="tiles-default, struts-default">
    <result-types>
      <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult"/>
    </result-types>
    <global-results>
        <result name="sessionTimeout"   type="tiles">.logon.LogonForm</result>      
        <result name="errorRedirect"    type="tiles">.errorPage</result>        
    </global-results>
    <action name="logon" class="logonAction" method="displayLogonForm">
        <result name="displayLogonForm" type="tiles">.logon.LogonForm</result>
    </action>
    <action name="doLogon" class="logonAction" method="doLogon">
        <result name="displayLogonForm" type="tiles">.logon.LogonForm</result>
        <result name="displayMainPage"              type="redirectAction">
            <param name="namespace">/secure</param> 
            <param name="actionName">membersite.action</param>
        </result>
    </action>
</package>
<package name="secureAwip" namespace="/secure" extends="tiles-default, struts-default">
    <result-types>
      <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult"/>
    </result-types>
    <global-results>
        <result name="sessionTimeout"   type="tiles">.logon.LogonForm</result>      
        <result name="errorRedirect"    type="tiles">.errorPage</result>        
    </global-results>
    <action name="membersite" method="unspecified" class="membersiteAction">
        <result name="displayMembersiteMain" type="tiles">.membersite.Main
        </result>
    </action>
 </package>

 

Upvotes: -1

Views: 311

Answers (1)

Roman C
Roman C

Reputation: 1

The action name should not have an extension .action. If you write it with the action name the action mapper can't find the appropriate mapping for the action's result.

The code

<param name="actionName">membersite.action</param>

should be changed to

<param name="actionName">membersite</param>

Upvotes: 0

Related Questions