Struts应用程序中的NullPointer异常

时间:2013-05-09 04:45:50

标签: java struts struts-1

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

Struts 1.2目录列表

enter image description here

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状态500 - ,如下所示

enter image description here

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

我在以下网址中添加了war文件

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

谢谢

2 个答案:

答案 0 :(得分: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。您需要添加一个转发到视图的动作映射。

答案 1 :(得分:1)

您的html:link代码属性forward错误。

根据Struts link tag specification

  

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

因此,您的全局转发应该指向Struts Action而不是页面。

我希望这可以解决你的问题。

查看相关示例here