Struts名称空间和WEB-INF文件夹

时间:2015-06-01 17:18:31

标签: java jsp tomcat struts2

我想将view.jsp文件放在WEB-INF文件夹中。它位于WEB-INF\user\view.jsp

<package name="user" extends="struts-default"  namespace="user">
     <action name="view" class="com.example.user.ViewUserAction">
             <result>/WEB-INF/user/view.jsp</result>
     </action>
</package>

但Struts将此网址更改为application/user/WEB-INF/user/view.jsp

据我所知,如果我的命名空间不是"/",我将永远不会访问WEB-INF中的JSP?

1 个答案:

答案 0 :(得分:1)

我发现我错了。

Alexander M 在评论中指出,不会生成此类网址。

问题是我尝试了各种糟糕的解决方案,但大多数都有下一个概要。

struts.xml我写道:

<package name="product" namespace="/" extends="struts-default">
        <action name="view" class="com.example.action.product.ViewProduct">
            <result name="success">/WEB-INF/view/product/view.jsp</result>
        </action>
</package>

在jsp中我将某个动作称为:

<a href="product/view">View product</a>

但似乎是错误的做法 - 在我的情况下,我有网址:

http://localhost:8080/app/product/product/view.action

无效。

所以我将struts.xml名称空间更改为:

  <package name="product" namespace="/product" extends="struts-default">
            <action name="view" class="com.example.action.product.ViewProduct">
                <result name="success">/WEB-INF/view/product/view.jsp</result>
            </action>
   </package>

然后在view.jsp中使用struts <s:a>标记(或您可以使用<s:url> ):

<a href="<s:url action='view' namespace="/product"/>"> View product</a>

<s:a action="view" namespace="/product"> View product</s:a>

有关包和命名空间的进一步参考:

  1. Struts Namespace Configuration
  2. Struts Package Configuration