【问题标题】:Struts namespaces and WEB-INF folder [duplicate]Struts 命名空间和 WEB-INF 文件夹 [重复]
【发布时间】:2015-06-01 17:18:31
【问题描述】:

我想把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?

【问题讨论】:

  • 什么?您在哪里看到 Struts 将此 url 更改为 application/user/WEB-INF/user/view.jsp
  • 命名空间不是您操作的路径,它就像您的操作所在的占位符。
  • @RomanC 所以它的工作方式类似于将要执行操作的位置?
  • 位置在结果标签的正文中,在你的代码中是绝对的。

标签: java jsp tomcat struts2


【解决方案1】:

我发现我错了。

正如 Alexander M 在 cmets 中指出的那样,不会生成这样的 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>

但似乎这样做的方法是错误的 - 在我的情况下,我的网址如下:

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&lt;s:a&gt;标签(或者你可以使用&lt;s:url&gt;):

<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

【讨论】:

  • 是的,使用 S2 标签构建 url 是最佳实践。
猜你喜欢
  • 2011-06-25
  • 2014-01-14
  • 2012-07-22
  • 2017-01-22
  • 1970-01-01
  • 2019-05-11
  • 1970-01-01
  • 2014-09-09
  • 1970-01-01
相关资源
最近更新 更多