Struts 个命名空间和 WEB-INF 文件夹
Struts namespaces and WEB-INF folder
我想将 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 将此 url 更改为 application/user/WEB-INF/user/view.jsp
据我所知,如果我的命名空间不是 "/"
,我将永远不会访问 WEB-INF
中的 JSP ?
我发现我哪里错了。
正如 Alexander M 在评论中指出的,不会生成这样的 url。
问题是我尝试了各种糟糕的解决方案,但大多数都有下一个概要。
我在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>
但这样做似乎是错误的方式 - 在我的例子中,我有 url 像:
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>
有关包和命名空间理解的进一步参考:
我想将 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 将此 url 更改为 application/user/WEB-INF/user/view.jsp
据我所知,如果我的命名空间不是 "/"
,我将永远不会访问 WEB-INF
中的 JSP ?
我发现我哪里错了。
正如 Alexander M 在评论中指出的,不会生成这样的 url。
问题是我尝试了各种糟糕的解决方案,但大多数都有下一个概要。
我在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>
但这样做似乎是错误的方式 - 在我的例子中,我有 url 像:
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>
有关包和命名空间理解的进一步参考: