【问题标题】:NullPointer Exception in Struts applicationStruts 应用程序中的 NullPointer 异常
【发布时间】:2016-08-26 13:16:02
【问题描述】:

我想创建一个显示 index.jsp 文件的 struts 应用程序,其中包含指向 search.jsp 文件的链接。Struts 1.2 应用程序的目录结构如下

Struts 1.2 目录列表

web.xml的内容如下

      <display-name>MiniHR</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>  
  <jsp-config>
   <taglib>
    <taglib-uri>http://struts.apache.org/tags-html</taglib-uri>
    <taglib-location>/WEB-INF/lib/struts-html.tld</taglib-location>    
  </taglib>
   </jsp-config>
   <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>*.</url-pattern>
    </servlet-mapping>
   <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
        <param-name>config</param-name>
        <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
</web-app>

struts-config.xml的内容如下

<global-forwards>
    <forward name="search" path="/search.jsp"></forward>
</global-forwards>

index.jsp的内容如下

<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<body>
    Add Employee<html:link forward="search">Search Employees</html:link>
</body>

现在当我在 Eclipse 上运行这个应用程序时,它显示 HTTP Status 500 - 如下

我尝试了一些解决方案,但似乎没有任何解决问题的方法。我们将不胜感激。

我已在以下 URL 中添加了 war 文件

http://www.fileconvoy.com/dfl.php?id=g6daddfa41e8981249992832312c465146f9b6bc45

谢谢

【问题讨论】:

  • 你提到的web.xml文件,是web.xml文件的全部内容吗?
  • 是的,这是我尝试在 init-param 中添加 struts-config 的全部内容,但没有任何建议
  • 你的 web.xml 中的 struts action servlet 映射在哪里?
  • 你可以在 web.xml 中发布更改,以便我尝试我尝试让我编辑我的答案
  • 问题的根本原因是:NullPointerException in TagUtils.computeURLWithCharEncoding exception 我看到的问题可能与struts-tld 版本有关。

标签: java struts struts-1


【解决方案1】:

Struts 假定所有请求都通过 Struts ActionServlet,而您显然还没有配置。使用 servlet-mapping *.do 设置 Struts servlet:

<servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>

然后您需要在 struts.xml 中定义一些重定向到您的视图的操作映射。如果您在 JSP 中使用 struts 标签,则无法直接访问 JSP。

编辑

您已使用新的web.xml 内容更新了您的问题,因此已涵盖上述内容。但是,您仍然不能直接访问 JSP。您需要添加一个转发到您的视图的操作映射。

【讨论】:

  • 感谢 Nilsh 的回复,我也试过了,但对我没用
  • 在这种情况下,请显示struts.xml 的完整内容以及您尝试访问的网址。
  • 我已将war文件上传到以下网址fileconvoy.com/…
  • 我会投赞成票感谢您提供的帮助非常感谢您
  • 但是您是如何访问该页面的?您在浏览器中输入的 URL 是什么?我的意思是你不能用http://host:port/index.jsp 访问它,因为那时你不会通过struts action servlet,你会得到各种各样的异常。
【解决方案2】:

你有html:link标签属性forward错误。

根据Struts link tag specification

forward - 使用此属性的值作为要查找的全局 ActionForward 的名称,并使用模块相对或 在那里找到上下文相关的 URI。如果转发是模块相关的 那么它必须指向一个动作而不是一个页面。

所以,你的全局转发应该指向一个 Struts Action 而不是一个页面。

希望这能解决您的问题。

查看相关示例here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-24
    • 2014-01-31
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多