【问题标题】:how to ignore default namespace in struts2如何忽略struts2中的默认命名空间
【发布时间】:2017-07-26 11:37:00
【问题描述】:

每个人。 我在 struts2 命名空间上遇到问题..

首先,这是我的开发环境。 服务器:tomcat (目前我的项目位于/tomcat/webapps/ROOTROOT 文件夹中) 框架:struts2

这是我的问题。 假设有两页。 admin_index.jsp 和 front_index.jsp 当我想从操作中调用 admin_index.jsp 时。我用

<package name="admin" namespace="/dl_adm" extends="struts-default">
  <action name="/index" method="index"class="kr.co.www2.controller.front.AdminMainController">
      <result name="success">/WEB-INF/jsp/admin/admin_index.jsp</result>
  </action>
</package>

调用http://.../dl_adm/index.do可以正常工作

这对我来说有问题。

<package name="front" namespace="/" extends="struts-default">
  <action name="/index" method="index"class="kr.co.www2.controller.front.FrontMainController">
      <result name="success">/WEB-INF/jsp/admin/front_index.jsp</result>
  </action>
</package>

当我选择 http://.../index.do 时,它会给出 404...

虽然我知道namespace="/" 是默认命名空间...

问题:

  1. 是否有忽略默认命名空间的方法?因为我想使用那个/ 因为我只想通过http://.../ 和没有命名空间的动作名称......

  2. 或者如果没有办法做到这一点。有什么建议吗?

【问题讨论】:

    标签: struts2 namespaces default-namespace


    【解决方案1】:
    1. 是否有忽略默认命名空间的方法?因为我想使用那个 / 因为我只想通过 http://.../ 和没有命名空间的动作名称..

    不,您不能忽略默认命名空间。默认命名空间为空,如果您在包声明中省略 namespace 属性,则会使用它。


    1. 或者如果没有办法做到这一点。有什么建议吗?

    我不会在使用 xml 配置的动作名称中使用斜杠。操作映射器可能会错误地在操作名称中添加额外的斜杠以从 URL 推断映射。


    所以你应该使用

    <package name="front" namespace="/" extends="struts-default">
      <action name="index" method="index"class="kr.co.www2.controller.front.FrontMainController">
          <result name="success">/WEB-INF/jsp/admin/front_index.jsp</result>
      </action>
    </package>
    

    【讨论】:

    • 好的,那么我将不得不更改 jsp 和 actionclass 中的所有动作名称。好吧,谢谢你:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-05
    • 2015-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-25
    相关资源
    最近更新 更多