在Web应用程序中运行Struts 1.1时抛出此错误的可能原因是什么?我的IDE控制台窗口中的堆栈跟踪如下所示:
java.lang.IllegalArgumentException: No bean specified
at org.apache.commons.beanutils.PropertyUtils.getPropertyDescriptor(PropertyUtils.java:837)
at org.apache.commons.beanutils.BeanUtils.setProperty(BeanUtils.java:934)
at org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:808)
at org.apache.struts.util.RequestUtils.populate(RequestUtils.java:1252)
at org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:821)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:254)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:223)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:175)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3245)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2003)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:1909)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1359)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:181)
Run Code Online (Sandbox Code Playgroud)
小智 9
这很可能是由org.apache.commons.beanutils.PropertyUtils试图从bean访问属性的类抛出的.你ActionForm可能是那个豆子.
你有ActionForm定义Action吗?检查您的struts-config.xml文件,看看<action>标签的name属性是否引用了a <form-bean>.
你这里没有提供足够的信息,所以我只能猜测.你也应该发布堆栈跟踪.
编辑:还有一件事你可以检查.从堆栈跟踪看来,你的Action表单似乎没问题(如果表单为null,我认为你不会在调用中如此深入),但它可能是表单上的内容.
您是否使用嵌套属性或在窗体上的bean上设置某些内容,例如:
public class MyAction extends ActionForm {
private SomeBean innerBean;
...
public SomeBean getInnerBean() {
return this.innerBean;
}
}
Run Code Online (Sandbox Code Playgroud)
如果你在JSP中指定form.innerBean.someProperty了为此提交的值,Struts将尝试执行类似的操作form.getInnerBean().setSomeProperty(...).如果该部分form.getInnerBean()为null,Struts会在您获得NullPointerException之前抱怨.
这种事情的解决方案是改变:
public class MyAction extends ActionForm {
private SomeBean innerBean;
...
}
Run Code Online (Sandbox Code Playgroud)
至
public class MyAction extends ActionForm {
private SomeBean innerBean = new SomeBean();
...
}
Run Code Online (Sandbox Code Playgroud)
这可能是原因吗?
| 归档时间: |
|
| 查看次数: |
22916 次 |
| 最近记录: |