struts2.2.1中运用action类时遇到的奇怪现象~~汗~

    技术2022-05-19  19

    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)!

    暂时还没解决这个疑惑!先总结,定义属性事,不要在第二个字母用大写这形式!


    最新回复(0)