CategoryAction.action代码如下
我的jsp页面:
浏览器错误信息如下(部分):
Struts Problem Report
Struts has detected an unhandled exception:
Messages: |
|
File: | ognl/ObjectPropertyAccessor.java |
Line number: | 151 |
Stacktraces
org.apache.jasper.JasperException: Caught an exception while getting the property values of com.itnetwork.Action.CategoryAction@1c4d594 - Class: ognl.ObjectPropertyAccessor File: ObjectPropertyAccessor.java Method: getProperty Line: 151 - ognl/ObjectPropertyAccessor.java:151:-1
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:541)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:435)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:654)
org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:445)
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:379)
控制台信息如下:
严重: Servlet.service() for servlet jsp threw exception
ognl.NoSuchPropertyException: com.itnetwork.Action.CategoryAction.cId
at ognl.ObjectPropertyAccessor.getProperty(ObjectPropertyAccessor.java:151)
at com.opensymphony.xwork2.ognl.accessor.ObjectAccessor.getProperty(ObjectAccessor.java:17)
at ognl.OgnlRuntime.getProperty(OgnlRuntime.java:2230)
at ognl.ASTProperty.getValueBody(ASTProperty.java:114)
at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)
at ognl.SimpleNode.getValue(SimpleNode.java:258)
at ognl.Ognl.getValue(Ognl.java:494)
at ognl.Ognl.getValue(Ognl.java:458)
at com.opensymphony.xwork2.ognl.OgnlUtil.getBeanMap(OgnlUtil.java:363)
以上错误根据输出的信息看,个人认为是找不到cId属性,晕死!怎么会找不到呢?有get,set方法(方法是我用myeclipse8.5自动生成的,可他妈的怎么就给我生成getcId(),setcId(),而不是生成getCId()呢?错误就是因为这),
我把它手动改成getCId形式,就好了!但是又有个问题出现!我百思不得其解,所以特以此记录下来,等以后再分析分析!
在前台看debug信息,信息如下(我已经把getcId改成getCId形式,set也是):
[[13,"category11"],[14,"category12"],[15,"category13"],[18,"category11"],[19,"category12"],[20,"category13"]]
Struts ValueStack Debug
Value Stack Contents
Object Property Name Property Value com.itnetwork.Action.CategoryAction texts null comboboxModelSt [[13,"category11"],[14,"category12"],[15,"category13"],[18,"category11"],[19,"category12"],[20,"category13"]] actionErrors [] errors {} fieldErrors {} errorMessages [] categoryServiceImp com.itnetwork.ServiceImp.CategoryServiceImp@b245dc container There is no read method for container locale zh_CN actionMessages [] CId 0 com.opensymphony.xwork2.DefaultTextProvider texts null
Stack Context
我的疑惑!comboboxModelSt怎么就会是头字母小写,但对比CId,从上面看CId属性,怎么就不是cId属性呢??
后来我把属性cId改成cid,就是不要首字母小写,接着大写这种形式命名属性,然后用myeclipse8.5自动生成,结果正常,生成的get,set方法也正常(getCid)
前台查看debug信息,属性名也正常(cid)!
暂时还没解决这个疑惑!先总结,定义属性事,不要在第二个字母用大写这形式!