CategoryAction.action代码如下
package com.itnetwork.Action;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.annotation.Resource;
import net.sf.json.JSONArray;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import com.itnetwork.Entity.Category;
import com.itnetwork.ServiceImp.CategoryServiceImp;
import com.opensymphony.xwork2.ActionSupport;
@Component("categoryAction")
@Scope("prototype")
public class CategoryAction extends ActionSupport{
// private List<Category> categoryList=new ArrayList<Category>();
//private List<Object[]> comboboxModel;
private String comboboxModelSt;
private int cId;
private CategoryServiceImp categoryServiceImp;
public String CategoryList(){
List<Object[]> comboboxModel=categoryServiceImp.getComboboxModel();
JSONArray jsonArray = JSONArray.fromObject(comboboxModel);
comboboxModelSt=jsonArray.toString();
System.out.println(comboboxModelSt);
return this.SUCCESS;
}
/* public List<Object[]> getComboboxModel() {
return comboboxModel;
}
public void setComboboxModel(List<Object[]> comboboxModel) {
this.comboboxModel = comboboxModel;
}*/
public String getComboboxModelSt() {
return comboboxModelSt;
}
public void setComboboxModelSt(String comboboxModelSt) {
this.comboboxModelSt = comboboxModelSt;
}
/* public int getCId() {
return cId;
}
public void setCId(int cId) {
this.cId = cId;
}*/
public CategoryServiceImp getCategoryServiceImp() {
return categoryServiceImp;
}
public int getcId() {
return cId;
}
public void setcId(int cId) {
this.cId = cId;
}
@Resource(name="categoryServiceImp")
public void setCategoryServiceImp(CategoryServiceImp categoryServiceImp) {
this.categoryServiceImp = categoryServiceImp;
}
}
我的jsp页面:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>二级栏目列表</title>
</head>
<body>
<s:property value="comboboxModelSt"/>
<s:debug></s:debug>
</body>
</html>
浏览器错误信息如下(部分):
Struts Problem Report
Struts has detected an unhandled exception:
Messages:
com.itnetwork.Action.CategoryAction.cIdCaught an exception while getting the property values of com.itnetwork.Action.CategoryAction@1c4d594Caught 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:-1File:ognl/ObjectPropertyAccessor.javaLine 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 exceptionognl.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"]] [Debug]
Struts ValueStack Debug
Value Stack Contents
ObjectProperty NameProperty Valuecom.itnetwork.Action.CategoryActiontextsnullcomboboxModelSt[[13,"category11"],[14,"category12"],[15,"category13"],[18,"category11"],[19,"category12"],[20,"category13"]]actionErrors[]errors{}fieldErrors{}errorMessages[]categoryServiceImpcom.itnetwork.ServiceImp.CategoryServiceImp@b245dccontainerThere is no read method for containerlocalezh_CNactionMessages[]CId0com.opensymphony.xwork2.DefaultTextProvidertextsnull
Stack Context
我的疑惑!comboboxModelSt怎么就会是头字母小写,但对比CId,从上面看CId属性,怎么就不是cId属性呢??
后来我把属性cId改成cid,就是不要首字母小写,接着大写这种形式命名属性,然后用myeclipse8.5自动生成,结果正常,生成的get,set方法也正常(getCid)
前台查看debug信息,属性名也正常(cid)!
暂时还没解决这个疑惑!先总结,定义属性事,不要在第二个字母用大写这形式!