org.apache.jasper.JasperException: org.apache.struts.action.ActionMessage
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:358)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
org.apache.struts.action.RequestProcessor.internalModuleRelativeForward(RequestProcessor.java:1012)
org.apache.struts.action.RequestProcessor.processValidate(RequestProcessor.java:980)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:255)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
root cause java.lang.ClassCastException: org.apache.struts.action.ActionMessage
org.apache.struts.taglib.html.ErrorsTag.doStartTag(ErrorsTag.java:215)
org.apache.jsp.inputInfor_jsp._jspx_meth_html_errors_0(inputInfor_jsp.java:205)
org.apache.jsp.inputInfor_jsp._jspx_meth_html_form_0(inputInfor_jsp.java:122)
org.apache.jsp.inputInfor_jsp._jspService(inputInfor_jsp.java:80)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
org.apache.struts.action.RequestProcessor.internalModuleRelativeForward(RequestProcessor.java:1012)
org.apache.struts.action.RequestProcessor.processValidate(RequestProcessor.java:980)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:255)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)

解决方案 »

  1.   

    关键三点:ActionMessageClassCastExceptionorg.apache.struts.taglib.html.ErrorsTag.doStartTag(ErrorsTag.java:215)==>validate()里面有错误,有个类型不好用,贴代码
      

  2.   

    这是actionform的代码:
    package com.yourcompany.struts.form;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionErrors;
    import org.apache.struts.action.ActionError;
    import org.apache.struts.action.ActionMapping;
    import javax.servlet.http.*;
    public class  UserLoginForm extends ActionForm
    {
    private String userName;
    private String password;

    public void setUserName(String userName)
    {
    this.userName = userName;
    }
    public String getUserName()
    {
    return userName;
    }
    public void setPassword(String password)
    {
    this.password = password;
    }
    public String getPassword()
    {
    return password;
    }

    public ActionErrors validate(ActionMapping mapping,HttpServletRequest request) 
    {
    ActionErrors errors = new ActionErrors();
    //System.out.println("1:No userid.");
    //System.out.println("userId=" + userName);
    if ( userName == null||userName.trim().equals("") ) 
    {
    //System.out.println("2:No userid.");
    errors.add("userName", new ActionError("errors.userName"));
    }
    if (( password == null) || password.trim().equals(""))
    {
    //System.out.println(password.length());
    //System.out.println("3:No password.");
    errors.add("password", new ActionError("errors.password"));
    }
    return errors;
    }
    }
      

  3.   

    //Created by MyEclipse Struts
    // XSL source (default): platform:/plugin/com.genuitec.eclipse.cross.easystruts.eclipse_4.1.1/xslt/JavaClass.xslpackage com.yourcompany.struts.form;import javax.servlet.http.HttpServletRequest;import org.apache.struts.action.ActionErrors;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.action.ActionMessage;
    public class AddformForm extends ActionForm {
    private String SNYZXH;
    private String SNYZBM;
    private String SNYZMC;
    public String getSNYZXH() {
    return SNYZXH;
    }
    public void setSNYZXH(String SNYZXH) {
    this.SNYZXH = SNYZXH;
    }
    public String getSNYZBM() {
    return SNYZBM;
    }
    public void setSNYZBM(String SNYZBM) {
    this.SNYZBM = SNYZBM;
    }
    public String getSNYZMC() {
    return SNYZMC;
    }
    public void setSNYZMC(String SNYZMC) {
    this.SNYZMC = SNYZMC;
    }
    public ActionErrors validate(ActionMapping mapping,HttpServletRequest request) 
    { ActionErrors errors=new ActionErrors();
    if(this.SNYZXH==null||this.SNYZXH.trim().equals(""))
    {
    errors.add("SNYZXH",new ActionMessage("errors.SNYZXH"));

    }
    if(this.SNYZBM==null||this.SNYZBM.trim().equals(""))
    {
    errors.add("SNYZBM",new ActionMessage("errors.SNYZBM"));

    }
    if(this.SNYZMC==null||this.SNYZMC.trim().equals(""))
    {
    errors.add("SNYZMC",new ActionMessage("errors.SNYZMC"));

    }
    return errors;
    }
    }
      

  4.   

    你看看你错误消息的XML文件里写的和你在FORM里用是不是一样,
    关键检查大小写,
    这个错误就是说你form里引用的名字在你相应的XML里没有定义,
    仔细点找,
    例:
    errors.add("SNYZXH",new ActionMessage("errors.SNYZXH"));
    errors.SNYZXH ,XML文件里没有定义。