发表于:2008-09-27 16:11:03 楼主 
2008-9-27 15:40:37 org.apache.struts.util.RequestUtils createActionForm 
严重: Error creating form bean of class com.victor.domain.NclassActionForm 
java.lang.NullPointerException 
at org.apache.struts.config.FormBeanConfig.createActionForm(FormBeanConfig.java:212) 
at org.apache.struts.util.RequestUtils.createActionForm(RequestUtils.java:292) 
at org.apache.struts.util.RequestUtils.createActionForm(RequestUtils.java:191) 
at org.apache.struts.taglib.html.FormTag.initFormBean(FormTag.java:477) 
at org.apache.struts.taglib.html.FormTag.doStartTag(FormTag.java:457) 
at jsp_servlet._managerback._nclassmanager.__insertnclass._jspService(__insertnclass.java:167) 
at weblogic.servlet.jsp.JspBase.service(JspBase.java:33) 
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:971) 
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:402) 
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:305) 
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6350) 
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317) 
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118) 
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3635) 
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2585) 
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197) 
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170) 
<2008-9-27 下午15时40分37秒 CST> <Error> <HTTP> <BEA-101017> <[ServletContext(id=21349396,name=Hzzj,context-path=/Hzzj)] Root cause of ServletException. 
javax.servlet.jsp.JspException: Exception creating bean of class com.victor.domain.NclassActionForm: {1} 
at org.apache.struts.taglib.html.FormTag.initFormBean(FormTag.java:487) 
at org.apache.struts.taglib.html.FormTag.doStartTag(FormTag.java:457) 
at jsp_servlet._managerback._nclassmanager.__insertnclass._jspService(__insertnclass.java:167) 
at weblogic.servlet.jsp.JspBase.service(JspBase.java:33) 
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:971) 
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:402) 
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:305) 
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6350) 
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317) 
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118) 
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3635) 
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2585) 
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197) 
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170) 

配置 
<struts-config> 
    <form-beans> 
        <form-bean name="NclassActionForm" type="com.victor.domain.NclassActionForm" /> 
  </form-beans> 
  <global-exceptions /> 
  <global-forwards /> 
  <action-mappings> 
      <action name="NclassActionForm" path="/nclassAction" scope="session" type="com.victor.webtier.nclassAction.NclassAction" parameter="operate"> 
    <forward name="insertnclass" path="success.jsp"> </forward> 
    </action> 
  </action-mappings> 
  <message-resources parameter="com.victor.webtier.ApplicationResources" /> 
</struts-config> form: 
public class NclassActionForm 
    extends ActionForm { 
private static final long serialVersionUID = 1668470603885372531L; 
private Nclass nclass; 
private String operate=""; 
public NclassActionForm() 

if(null==this.nclass) 

this.nclass=new Nclass(); 


public Nclass getNclass() { 
return nclass; 

public void setNclass(Nclass nclass) { 
this.nclass = nclass; 

public String getOperate() { 
return operate; 

public void setOperate(String operate) { 
this.operate = operate; 
}   

entity: 
public class Nclass { 
private int id; 
private String classname; 
private int parentid; 
private int orderid; 
public String getClassname() { 
return classname; 

public void setClassname(String classname) { 
this.classname = classname; 

public int getId() { 
return id; 

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

public int getOrderid() { 
return orderid; 

public void setOrderid(int orderid) { 
this.orderid = orderid; 

public int getParentid() { 
return parentid; 

public void setParentid(int parentid) { 
this.parentid = parentid; 

} action: 
public class NclassAction extends DispatchAction { 
private NclassDaoImpl nclassdao=new NclassDaoImpl(); 
public ActionForward doInsertNclass(ActionMapping mapping, 
ActionForm form, 
HttpServletRequest request, 
HttpServletResponse response) 

NclassActionForm myform=(NclassActionForm)form; 
Nclass nclass=new Nclass(); 
nclass.setId(myform.getNclass().getId()); 
nclass.setClassname(myform.getNclass().getClassname()); 
nclass.setParentid(myform.getNclass().getParentid()); 
nclass.setOrderid(myform.getNclass().getOrderid()); 
nclassdao.NclassInsert(nclass); return mapping.findForward("insertnclass"); 


jsp: 
<%@ page contentType="text/html; charset=GB2312" %> 
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%> 
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%> 
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%> 
<html> 
<head> 
<title> 
insertNclass 
</title> 
</head> 
<script type="text/javascript"> 
function check() 

var classname=document.form[0].classname.value; 
if(classname=="" || classname==null) 

alert("请输入类别名称!"); 
return false; 

  return true; 

function doInsertNclass() 

document.forms[0].elements["operate"].value = "doInsertNclass"; 
document.forms[0].submit(); 

</script> 
<body bgcolor="#ffffff"> 
<center> 
<h1> 
添加信息分类 
</h1> 
<html:form  method="post" action="nclassAction"> 
<table> 
<tr> <td colspan="2"> 
<html:hidden name="NclassActionForm" property="operate" value="doInsertNclass" /> 
</td> 
</tr> 
<tr> 
<td> 
信息名称: </td> <td> <html:text name="NclassActionForm" property="nclass.classname" onblur="return check()" /> </td> 
</tr> 
<tr> <td>信息级别: </td> <td> 
<html:select name="NclassActionForm" property="nclass.parentid"> 
<html:option value="1">一级 </html:option> 
<html:option value="2">二级 </html:option> 
<html:option value="3">三级 </html:option> 
</html:select> </td> 
</tr> 
<tr> <td>信息顺序: </td> <td> 
<html:select name="NclassActionForm" property="nclass.orderid"> 
<html:option value="1">1 </html:option> 
<html:option value="2">2 </html:option> 
<html:option value="3">3 </html:option> 
</html:select> </td> 
</tr> 
<tr> 
<td colspan="2"> <button onclick="javascript:doInsertNclass();">添加 </button> </td> 
</tr> 
</table> 
</html:form> 
</center> 
</body> 
</html> 
 

解决方案 »

  1.   

    javax.servlet.jsp.JspException: Exception creating bean of class com.victor.domain.NclassActionForm: {1} 只看出来是类初始化错误。 其它的你自己排查吧。NclassActionForm 就这个东西
      

  2.   

    谢谢,添了构造方法,出现了新的问题引用标签出问题
    weblogic.servlet.jsp.JspException: (line 3): Error in using tag library uri='/WEB-INF/struts-html.tld' prefix='html': The Tag class 'org.apache.struts.taglib.html.CheckboxTag' has no setter method corresponding to TLD declared attribute 'errorKey', (JSP 1.1 spec, 5.4.1)
    at weblogic.servlet.jsp.StandardTagLib.tld_jspException(StandardTagLib.java:1235)
    at weblogic.servlet.jsp.StandardTagLib.parseTagDD(StandardTagLib.java:1363)
    at weblogic.servlet.jsp.StandardTagLib.parseDD(StandardTagLib.java:1261)
    at weblogic.servlet.jsp.StandardTagLib.<init>(StandardTagLib.java:292)
    at weblogic.servlet.jsp.TagLibHelper.loadTagLib(TagLibHelper.java:314)
    at weblogic.servlet.jsp.JspLexer.loadTagLib(JspLexer.java:145)
    at weblogic.servlet.jsp.JspLexer.mTAGLIB_DIRECTIVE_BODY(JspLexer.java:5015)
    at weblogic.servlet.jsp.JspLexer.mTAGLIB_DIRECTIVE(JspLexer.java:4853)
    at weblogic.servlet.jsp.JspLexer.mDIRECTIVE(JspLexer.java:4699)
    at weblogic.servlet.jsp.JspLexer.mSTANDARD_THING(JspLexer.java:2094)
    at weblogic.servlet.jsp.JspLexer.mTOKEN(JspLexer.java:1880)
    at weblogic.servlet.jsp.JspLexer.nextToken(JspLexer.java:1753)
    at weblogic.servlet.jsp.JspLexer.parse(JspLexer.java:963)
    at weblogic.servlet.jsp.JspParser.doit(JspParser.java:106)
    at weblogic.servlet.jsp.JspParser.parse(JspParser.java:230)
    at weblogic.servlet.jsp.Jsp2Java.outputs(Jsp2Java.java:125)
    at weblogic.utils.compiler.CodeGenerator.generate(CodeGenerator.java:258)
    at weblogic.servlet.jsp.JspStub.compilePage(JspStub.java:367)
    at weblogic.servlet.jsp.JspStub.prepareServlet(JspStub.java:223)
    at weblogic.servlet.jsp.JspStub.prepareServlet(JspStub.java:172)
    at weblogic.servlet.internal.ServletStubImpl.getServlet(ServletStubImpl.java:518)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:362)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:446)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:305)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6350)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
    at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3635)
    at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2585)
    at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
    at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
      

  3.   

    打开struts.jar可以看到有org和META-INF两个目录,在META-INF目录下是验证用的tld文件,实际上我们只要把这个META-INF目录删除即可。可以下载struts的源代码,然后重新生成新的jar文件,只包含java类文件,不要包含tld文件 
    试了这个,问题依旧!!