java - 如何删除 Struts1.x 中的 NullPointerException

标签 java struts-1

我是 STRUTS 新手,正在尝试制定简单的示例。当我执行该示例时,我在互联网浏览器上收到以下错误..

<< javax.servlet.ServletException: javax.servlet.jsp.JspException: Exception creating bean of class com.example.LoginForm >>

并且在 Eclipse 控制台中看到类似的错误,并在空指针异常上添加了一行

<< SEVERE: Error creating form bean of class com.example.LoginForm
java.lang.NullPointerException >>

下面列出的是我的struts-config.xml的一部分

struts-config.xml - 提取

<struts-config>

< form-beans>   
  < form-bean name="loginRequest" type="com.example.LoginForm" />    
</form-bean>
< /form-beans>


< !-- =========================================== Global Forward Definitions -->

< global-forwards>  
< forward
   name="welcome"
   path="/Welcome.do"/>  
< /global-forwards>


< !-- =========================================== Action Mapping Definitions -->

< action-mappings>   
< action path="/login"
    name="loginRequest"
    type="com.example.LoginAction">   
 < forward name="success"
     path="/success.jsp">
 < /forward>    
 < forward name="failure"
     path="/login.jsp">
  < /forward>
 </action>    
 <action path="/Welcome"
    forward="/pages/Welcome.jsp"/>
< /action-mappings>


< !-- ======================================== Message Resources Definitions -->

< message-resources parameter="MessageResources" />

< /struts-config>    

我的JSP登录.jsp

< %@ taglib prefix="bean" uri="/WEB-INF/struts-bean.tld" %>    
< %@ taglib prefix="html" uri="/WEB-INF/struts-html.tld" %>

< bean:message key="title" />

< html:form action="login">

    <bean:message key="login.username"/>

    <html:text property="username"></html:text>

    <br>

    <bean:message key="login.password"/>

    <html:text property="password"></html:text>

    <br>

    <html:submit>
        <bean:message key="login.submit"/>
    </html:submit>

< /html:form>

LoginForm 类

package com.example;

import org.apache.struts.action.ActionForm;

public class LoginForm extends ActionForm     
{     
    private String username;   
    private String password;

    public LoginForm()
    {

    }

    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }

}

LoginAction 类

package com.example;   

import javax.servlet.http.HttpServletRequest;    
import javax.servlet.http.HttpServletResponse;     

import org.apache.struts.action.Action;     
import org.apache.struts.action.ActionForm;     
import org.apache.struts.action.ActionForward;      
import org.apache.struts.action.ActionMapping;     

public class LoginAction extends Action   
{     
    @Override    
    public ActionForward execute(ActionMapping mapping, ActionForm form,    
            HttpServletRequest request, HttpServletResponse response)    
            throws Exception     
    {   
        LoginForm login = (LoginForm)form;     
        String name = login.getUsername();    
        String pass = login.getPassword();    

        if(name.equals("hello") && pass.equals("hello"))    
            return mapping.findForward("success");   
        else    
            return mapping.findForward("failure");    
    }    
}   

MessageResources.properties 类

title=Welcome   
login.username=Username    
loguin.password=Password    
login.submit=Submit

堆栈跟踪

org.apache.struts.util.RequestUtils createActionForm    
SEVERE: Error creating form bean of class com.example.LoginForm 
java.lang.NullPointerException
=========== ======================
    at org.apache.struts.config.FormBeanConfig.createActionForm(FormBeanConfig.java:289)
    at org.apache.struts.util.RequestUtils.createActionForm(RequestUtils.java:259)
    at org.apache.struts.util.RequestUtils.createActionForm(RequestUtils.java:213)
    at org.apache.struts.taglib.html.FormTag.initFormBean(FormTag.java:526)
    at org.apache.struts.taglib.html.FormTag.doStartTag(FormTag.java:503)
    at org.apache.jsp.login_jsp._jspx_meth_html_005fform_005f0(login_jsp.java:122)
    at org.apache.jsp.login_jsp._jspService(login_jsp.java:79)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
    at java.lang.Thread.run(Unknown Source)

Jun 23, 2011 12:56:47 PM org.apache.struts.util.PropertyMessageResources loadLocale
WARNING:   Resource org/apache/struts/taglib/html/LocalStrings_en_US.properties Not Found.
Jun 23, 2011 12:56:47 PM org.apache.struts.util.PropertyMessageResources loadLocale
WARNING:   Resource org/apache/struts/taglib/html/LocalStrings_en.properties Not Found.
Jun 23, 2011 12:56:47 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet jsp threw exception <br/><br/>
javax.servlet.jsp.JspException: Exception creating bean of class com.example.LoginForm under form name loginRequest
    at org.apache.struts.taglib.html.FormTag.initFormBean(FormTag.java:536)
    at org.apache.struts.taglib.html.FormTag.doStartTag(FormTag.java:503)
    at org.apache.jsp.login_jsp._jspx_meth_html_005fform_005f0(login_jsp.java:122)
    at org.apache.jsp.login_jsp._jspService(login_jsp.java:79)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
    at java.lang.Thread.run(Unknown Source)

任何人都可以弄清楚我做错了什么以及为什么会发生此错误。

谢谢,
安基特

最佳答案

您忘记了/在您对 html:form 的行动中.

这就是您在表单中调用操作的方式。

<html:form action="/login">
<小时/>

更新,确保清理所有 XML 文档,包括 JSP

XML validator 中不允许使用以下内容(示例):

  • < form-beans>
  • < /struts-config>

XML 不允许 <></> 内有空格, </>标签。这也适用于标签。

<小时/>

更新,我发现正确问题。这是您在 struts-config.xml 中对表单 bean 的声明.

你有:

<form-beans>   
    <form-bean name="loginRequest" type="com.example.LoginForm" />    
</form-bean>
</form-beans>

您正在关闭您的 <form-bean> 两次

解决方案:

< form-beans>
    <form-bean name="loginRequest" type="com.example.LoginForm" />    
</form-beans>

现在,这一定有效。 :-) (抱歉回复晚了,工作需要我。)

此外,我建议使用 IDE(例如 Eclipse 或 NetBeans)来完成您的 Struts 项目(而不是通过手动键入来完成),特别是对于 XML 声明。

关于java - 如何删除 Struts1.x 中的 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6451516/

相关文章:

java - 验证字符串中的多项式

java - JBWEB000236 : Servlet. servlet strutsAction 的 service() 抛出异常 : java. lang.StackOverflowError

javascript - 如何在action类中识别两个不同的jsp页面按钮?如何编写条件,基于jsp页面查看按钮和查看全部按钮?

java - 将 jsp 重定向到另一个 jsp (Struts1)

java - 如何通过属性配置 java.util.logging 以使用标准输出?

java cucumber.api.cli.main 命令行用法

java - 整数输入只做while循环,陷入无限循环

java - Spring @ModelAttribute 模型字段映射

java - 从 WEB-INF 中包含 javascript 文件

java - 如何根据 struts session 变量拥有动态 css 文件