class 的异常创建 bean

Exception creating bean of class

我是 struts 的新手,为了工作必须学习它们,我正在使用 struts 1.3,我正在尝试制作一个简单的年龄检查应用程序,它没有任何业务到目前为止的逻辑我只是希望它转发到正确的页面我稍后会弄清楚其余部分,但我收到以下异常:

type Exception report

message An exception occurred processing JSP page /welcome.jsp at line 15

description The server encountered an internal error that prevented it from fulfilling this request.

exception 
org.apache.jasper.JasperException: An exception occurred processing JSP page /welcome.jsp at line 15

12:         <div style="color:red">
13:             <html:errors />
14:         </div>
15:         <html:form action="/CheckAge.do"  >
16:             User Name : <html:text name="CheckAgeAppForm" property="name" /> <br>
17:             Password  : <html:text name="CheckAgeAppForm" property="age" /> <br>
18:             <html:submit value="Check Age" />


Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:575)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:462)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)



root cause 
javax.servlet.ServletException: javax.servlet.jsp.JspException: Exception creating bean of class coreservlets.CheckAgeAppForm: {1}
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:916)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:845)
    org.apache.jsp.welcome_jsp._jspService(welcome_jsp.java:134)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:439)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)



root cause 
javax.servlet.jsp.JspException: Exception creating bean of class coreservlets.CheckAgeAppForm: {1}
    org.apache.struts.taglib.html.FormTag.initFormBean(FormTag.java:463)
    org.apache.struts.taglib.html.FormTag.doStartTag(FormTag.java:433)
    org.apache.jsp.welcome_jsp._jspx_meth_html_005fform_005f0(welcome_jsp.java:169)
    org.apache.jsp.welcome_jsp._jspService(welcome_jsp.java:118)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:439)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

struts-config的动作映射:

<action-mappings>


<action
    path="/CheckAge"
    type="coreservlets.CheckAgeAppAction"
    name="CheckAgeAppForm"
    scope="session"
    validate="false"
    input="/welcome.jsp">
<forward name="UnderAge" path="/UnderAge.jsp" />
</action>
    <action path="/welcome" forward="/welcome.jsp"/>
</action-mappings>

struts-config 的表单 bean:

<form-bean
            name="CheckAgeAppForm"
            type="coreservlets.CheckAgeAppForm"/>
    </form-beans>

welcome.jsp文件内容:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <div style="color:red">
            <html:errors />
        </div>
        <html:form action="/CheckAge.do"  >
            User Name : <html:text name="CheckAgeAppForm" property="name" /> <br>
            Password  : <html:text name="CheckAgeAppForm" property="age" /> <br>
            <html:submit value="Check Age" />
        </html:form>
    </body>
</html>

web.xml部分:

<!-- Standard Action Servlet Mapping -->
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>

动作表单 CheckAgeAppForm:

package coreservlets;

import org.apache.struts.action.*;

public class CheckAgeAppForm extends ActionForm {

    private String name;
    private String age;

    public String getName(){
        return (name);
    }
    public String getAge(){
        return (age);
    }
    public void setName(String name){
        this.name= name;
    }
    public void setAge(String age){
        this.age = age;

    }



}

CheckAgeAppAction:

package coreservlets;

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

import org.apache.struts.action.*;

public class CheckAgeAppAction extends Action
{
            public ActionForward execute(
                      ActionMapping mapping,
                      ActionForm form,
                      HttpServletRequest request,
                      HttpServletResponse response) throws Exception{
                      return mapping.findForward("UnderAge");
                      }
}

我将不胜感激任何帮助,这让我很烦,在此先感谢

更新:包含动作,动作映射也已更新

在你的堆栈跟踪中 root cause 下面应该有类似 caused by 的东西,所以请 post 它也一样。

但无论如何,有一件事在我看来很可疑。您的 struts 配置有:

<action
        path="/CheckAge"
        type="coreservlets.CheckAgeAppAction"
        ...

但是 documentation 对于 type 属性表示:

Fully qualified Java class name of the Action subclass [org.apache.struts.action.Action] that will process requests for this action mapping. Not valid if either the "forward" or "include" attribute is specified. Exactly one of "forward", "include", or "type" must be specified.

但是在您 posted 的代码中您没有 class coreservlets.CheckAgeAppAction - 您只有 coreservlets.CheckAgeAppForm。这是一个错误吗?还是您只是为了简洁而跳过了这个?

编辑:好吧,一个错误的踪迹——你只是为了简洁而跳过它。对不起,那我就没头绪了。

顺便说一句:如果我能给你一些建议,请不要碰Struts 1.x。如果您必须在工作场所使用它,可能最好辞掉这份工作。 Struts 1.x 非常奇怪并且对开发人员不友好。此外,自 2008 年以来也已停产...

如果您发布的 Struts 配置是您应用中的配置,我发现有一个错误,您没有在操作映射中包含前向标记,您在前向标记之前关闭了操作:

<action
        path="/CheckAge"
        type="coreservlets.CheckAgeAppAction"
        name="CheckAgeAppForm"
        scope="session"
        validate="false"
        input="/welcome.jsp">
    <forward name="UnderAge" path="/UnderAge.jsp" />
</action>

我终于解决了这个问题以及随后的其他问题。 jsp 文件使用 .do :

<html:form action="/AgeCheck.do"  >

动作映射没有.do :

<action
            path="/AgeCheck"
            type="coreservlets.CheckAgeAppAction"
            name="AgeCheckForm"

            >   

            <forward name="UnderAge" path="/UnderAge.jsp" />


</action>

以下是我遇到的错误

No action instance for path could be created

这是由我的项目的文件结构引起的,这意味着 java 文件没有被编译,默认情况下 java 文件存储在这里:

我已经将这些文件原封不动地移到了这里:

嘿嘿,一切正常:-)希望这对将来的人有所帮助, 感谢大家的帮助,不幸的是我还不能投票。