javax.servlet.jsp.JspException : Cannot retrieve definition for form bean, 由 : java. lang.NullPointerException 引起

标签 java html jsp struts

我一直在从事 JSP 项目。它使用Struts 1框架。该项目很旧,我有很多页面,所以我决定添加一个新页面。我复制了一个现有页面及其所有配置、模型操作,所以一切都应该没问题。但事实并非如此!

我想先创建一个简单的JSP文件。没有<html:form>就太好了,我看到了我的“Hello World”。然后我将文件修改为:

<% request.setCharacterEncoding("UTF8");%>
<%@page contentType="text/html;charset=UTF-8"%>
<%@page pageEncoding="UTF-8"%>
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="/tags/struts-logic" prefix="logic" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="/tags/struts-nested" prefix="nested"%>
<%@ taglib prefix="fa" uri="/WEB-INF/tlds/finearts"%>

<fa:checkLogon/>

<fa:Header/>
<fa:Navigation navigationId="806"/>

<html:form action="/pages/editTexts.do" method="post" onsubmit="return doSubmit(this);"     >
</html:form>
<fa:Footer/>

并收到此错误:

org.apache.jasper.JasperException:在第 15 行处理 JSP 页面/pages/editTexts.jsp 时发生异常

12: <fa:Header/>
13: <fa:Navigation navigationId="806"/>
14: 
15: <html:form action="/pages/editTexts.do" method="post" onsubmit="return     doSubmit(this);" >
16: </html:form>
17: <fa:Footer/>


Stacktrace:
    at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:398)
    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.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at depo.common.filter.EncodeFilter.doFilter(EncodeFilter.java:32)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    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:286)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Thread.java:595)
Caused by: javax.servlet.ServletException: javax.servlet.jsp.JspException: Cannot retrieve definition for form bean: "EditTextsForm" on action: "/pages/editTexts.do"
    at org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:852)
    at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781)
    at org.apache.jsp.pages.editTexts_jsp._jspService(editTexts_jsp.java:104)
    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)
    ... 24 more

Caused by: javax.servlet.jsp.JspException: Cannot retrieve definition for form bean:     "EditTextsForm" on action: "/pages/editTexts.do"
    at org.apache.struts.taglib.html.FormTag.lookup(FormTag.java:881)
    at org.apache.struts.taglib.html.FormTag.doStartTag(FormTag.java:488)
    at org.apache.jsp.pages.editTexts_jsp._jspx_meth_html_005fform_005f0(editTexts_jsp.java:170)
    at org.apache.jsp.pages.editTexts_jsp._jspService(editTexts_jsp.java:94)
    ... 27 more
create connectionjdbc:mysql://localhost:3306/szepmubk?    relaxAutoCommit=true&autoReconnect=true&useServerPrepStmts=false&useUnicode=true&characterEn    coding=UTF-8&mysqlEncoding=utf8&characterSetResults=UTF-8create     connectionjdbc:mysql://localhost:3306/szepmubk?    relaxAutoCommit=true&autoReconnect=true&useServerPrepStmts=false&useUnicode=true&characterEn    coding=UTF-8&mysqlEncoding=utf8&characterSetResults=UTF-8create     connectionjdbc:mysql://localhost:3306/szepmubk?    relaxAutoCommit=true&autoReconnect=true&useServerPrepStmts=false&useUnicode=true&characterEn    coding=UTF-8&mysqlEncoding=utf8&characterSetResults=UTF-8create     connectionjdbc:mysql://localhost:3306/szepmubk?    relaxAutoCommit=true&autoReconnect=true&useServerPrepStmts=false&useUnicode=true&characterEn    coding=UTF-8&mysqlEncoding=utf8&characterSetResults=UTF-8create     connectionjdbc:mysql://localhost:3306/szepmubk?    relaxAutoCommit=true&autoReconnect=true&useServerPrepStmts=false&useUnicode=true&characterEn    coding=UTF-8&mysqlEncoding=utf8&characterSetResults=UTF-8create     connectionjdbc:mysql://localhost:3306/szepmubk?    relaxAutoCommit=true&autoReconnect=true&useServerPrepStmts=false&useUnicode=true&characterEn    coding=UTF-8&mysqlEncoding=utf8&characterSetResults=UTF-8create     connectionjdbc:mysql://localhost:3306/szepmubk?    relaxAutoCommit=true&autoReconnect=true&useServerPrepStmts=false&useUnicode=true&characterEn    coding=UTF-8&mysqlEncoding=utf8&characterSetResults=UTF-8create     connectionjdbc:mysql://localhost:3306/szepmubk?    relaxAutoCommit=true&autoReconnect=true&useServerPrepStmts=false&useUnicode=true&characterEn    coding=UTF-8&mysqlEncoding=utf8&characterSetResults=UTF-8create     connectionjdbc:mysql://localhost:3306/szepmubk?    relaxAutoCommit=true&autoReconnect=true&useServerPrepStmts=false&useUnicode=true&characterEn    coding=UTF-8&mysqlEncoding=utf8&characterSetResults=UTF-8javax.servlet.ServletException:     java.lang.NullPointerException
        at     org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:520)
        at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:427)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:228)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    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.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at depo.common.filter.EncodeFilter.doFilter(EncodeFilter.java:32)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    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:286)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Thread.java:595)
Caused by: java.lang.NullPointerException
    at depo.finearts.action.EditTextsAction.execute(EditTextsAction.java:35)
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:425)
    ... 26 more

EditTextsForm.java

package depo.finearts.form;
import depo.common.db.DBConnection;
import depo.finearts.*;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;

public class EditTextsForm extends ActionForm {
    DBConnection connection;
    User user;
    String action;
    int id;


    @Override
    public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
        ActionErrors errors = new ActionErrors();
        if (!action.startsWith("validate") ) return null;
        setAction("save");
        return errors;
    }
    @Override
    public void reset( ActionMapping mapping, HttpServletRequest request) {
        super.reset(mapping, request);
        try {
          setConnection(new DBConnection());
        } catch (Exception ex) {}
        action = request.getParameter("action");
        if (action == null || "".equals(action)) {
            action = "invalid";
        }
        if (request.getParameterMap().containsKey("id")) {
            id = Integer.parseInt(request.getParameter("id"));
            user = new User(connection, id);
        } else {
            user = new User(connection);
        }
    }
    public void save () throws Exception {
        getUser().save();
        getConnection().getConnection().commit();
    }

    public DBConnection getConnection() {
        return connection;
    }

    public void setConnection(DBConnection connection) {
        this.connection = connection;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    public String getAction() {
        return action;
    }

    public void setAction(String action) {
        this.action = action;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
}

配置

<action
    path="/pages/edit*"
    type="depo.finearts.action.Edit{1}Action"
    name="Edit{1}Form"
    scope="request"
    validate="true"
    input="/pages/edit{1}.jsp?action=invalid">
    <forward name="form" path="/pages/edit{1}.jsp" />      
    <forward name="view" path="/pages/view{1}.jsp" />                        
</action> 

最佳答案

  1. 检查您是否在 struts-config.xml 标记中使用此名称“EditTextsForm”定义了此 frombean

关于javax.servlet.jsp.JspException : Cannot retrieve definition for form bean, 由 : java. lang.NullPointerException 引起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16714441/

相关文章:

jsp - 如何从 JAX-RS 服务转发到 JSP?

jsp - Applet 和 JSP 通信

java - 数组列表打印奇怪的输出

javascript - JS 重定向未按预期工作

javascript - 在本地系统中下载文件或pdf,而不仅仅是在服务器中

javascript - 将数据从html表单发送到mongodb数据库

javascript - 使用 jquery 更改跨度的可见性

java - 重复字符串的简单方法

java - 如何在列表中存储二维数组坐标(不使用列表容器?)

java - 涂抹工具的算法?