【问题标题】:Struts.xml package namespace in eclipseEclipse 中的 Struts.xml 包命名空间
【发布时间】:2011-07-19 18:50:23
【问题描述】:

我正在尝试使用 struts 应用程序设置 apache tomcat 服务器。问题是项目的目录结构没有很好地映射出来。当我尝试启动我的服务器时,我已经对其进行了更新并遇到了问题。我的文件夹结构如下。

我更改的主要内容是将所有 jsp 文件移动到一个单独的文件夹中,它们最初只是直接位于 Web Content 文件夹中。我的问题是现在我认为我唯一需要更改的是 struts.xml 的包默认命名空间(他们制作的唯一一个)到“/jsp”,认为“/”将指向 web 内容文件夹并添加 jsp 会命中正确的文件夹。然而,情况似乎并非如此。我收到一条错误消息:“没有为命名空间“/”和操作名称 mainDashboardHome 映射操作。” (尝试清理服务器、清除 FF 缓存并重新启动 eclipse),就像它甚至没有看到我更改了包的命名空间一样。我的 web.xml 是超基本过滤所有 url 模式到 struts2。我唯一能想到的是 Welcom-file-list :Welcome.jsp 的重定向需要更改...下面的代码。不知道要改成什么。

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
</head>
<body>
  <% response.sendRedirect("mainDashboardHome.action"); %>
</body>
</html>

也是我的 struts.xml 包定义的开始,其中包含仪表板操作(位于 SRC 文件夹中):

<struts>
...  
<package name="default" extends="struts-default" namespace="/jsp">  
...  
<action name="mainDashboardHome" method="mainDashBoard"
        class="mainDashboard.Action.ApplicationRouteAction">
        <result name="success">test.jsp</result>
        <result name="error">Login.jsp</result>

    </action>

【问题讨论】:

  • 重定向应该在struts.xml中处理,你不应该有这样的页面。考虑使用约定插件,它将为您节省大量时间。如果您发现确实需要在 jsp 中构建 URL,请使用 struts2 url 标签(它将创建具有正确应用程序上下文的 url)。

标签: java eclipse jakarta-ee struts2 struts-config


【解决方案1】:

理论是这样的:命名空间和动作名称不必与您的动作或 jsp 文件位置相对应(虽然您可以为方便起见自己这样做,但我会这样做 :D :D :D)。命名空间和动作名称主要影响客户端如何查看其 url。动作文件和jsp文件将在你的struts.xml中指定

在您的情况下,用户将看到 mainDashboardHome 的 url 为 .../jsp/mainDashboardHome.action

既然你说你把你的jsp移动到特殊文件夹,结果标签内容没有显示任何文件夹,我认为你的jsp文件位置设置(&lt;result name="success/error"&gt;wherever_your_jsp_is.jsp&lt;/result&gt;)必须改变

所以,我认为以下是您的故障排除步骤: 1. 将命名空间更改为“/”(虽然不是绝对必要的。我取决于您希望 url 的样子) 2. 将结果标签内的 jsp 位置更改为您存储 jsp 文件的位置

作为旁注,您不需要放置 response.sendRedirect("mainDashboardHome.action");在你的jsp里面。您可以在您的 struts.xml 中执行此操作:

<action blablabla>
   <result name="anotherblablabla" type="redirectAction">
        <param name="namespace">/</param>
        <param name="actionName">mainDashboardHome</param>
   </result>
</action>

【讨论】:

    【解决方案2】:

    要么将命名空间更改为namespace="/",要么从浏览器调用/jsp/(action-name)

    编辑:更多信息Struts Namespaces

    【讨论】:

    • 你不应该需要命名空间="/"。
    • 是的。如果在提到的命名空间中找不到该操作,它会自动回退到“/”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-06
    • 1970-01-01
    • 1970-01-01
    • 2011-07-27
    • 1970-01-01
    • 1970-01-01
    • 2017-05-28
    相关资源
    最近更新 更多