1

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

在此处输入图像描述

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

<%@ 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>
4

2 回答 2

3

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

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

既然您说您将 jsp 移动到特殊文件夹,并且您的结果标记内容没有显示任何文件夹,我认为您的 jsp 文件位置设置(<result name="success/error">wherever_your_jsp_is.jsp</result>)必须更改

所以,我认为这里是您的故障排除步骤: 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>
于 2011-07-20T02:28:53.013 回答
1

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

编辑: Struts 命名空间的更多信息

于 2011-07-19T18:57:44.457 回答