我想将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?
答案 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>
有关包和命名空间的进一步参考: