2017-07-31 66 views
-1

我对struts2 web项目的struts.xml存在问题。 我有登录页面,登录后URL将添加“/ secure/.action”。 我试图在struts.xml中有两个包。一个是正​​常的“/”,第二个是“/ secure”。但是会导致登录后404找不到页面。如果我在命名空间中创建第二个包“\”,并且仅使用“/”命名空间调用membersite.action,则它将成功并直接成功,但在URL中只有“/ .action”。我需要在基础结构问题中拥有此URL“/secure/*.action”。有没有什么提示?struts.xml名称空间导致404未找到页面

<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> 

回答

0

动作名称不能有扩展名.action。如果使用动作名称编写动作映射程序,则无法找到动作结果的适当映射。

代码

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

应改为

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

试过,但还是同样的错误。 – Chiu

+0

我发现了这个问题。因为我有loginFilter会检查会话用户ID值。如果它为空,则会显示问题。当我越过名字空间时,会话用户ID将变为空。我无法删除登录过滤器,有什么办法解决它? – Chiu

+0

什么是loginFilter? –