struts2.1.8 +jquery easy ui,datagird的不到数据

环境struts2.1.8,用自带的那个struts2-json-plugin-2.1.8.1.jar,jso页面调试时发现可以得到action里的json对象,但就是jquery easy ui的datagird 里通过url访问都没执行action,直接跳到input 对应的页面,设了s:fielderror查看了下,说返回的rows没值,验证错误,怎么回事,jsp里没有输入啊 
action代码
Java代码   收藏代码
  1. @Controller  
  2. // 声明此类为控制层的类,且为prototype模式调用  
  3. @Scope("prototype")  
  4. @ParentPackage("json-default")  
  5. @Results( {  
  6.   
  7.         @Result(name = "success",type = "json"),  
  8.          @Result(name = "input",location = "/product/productUnitManage.jsp") })  
  9. public class ProdUnitAction extends ActionSupport {  
  10.   
  11.     private static final long serialVersionUID = -6595716080263610502L;  
  12.    
  13.     private ScmProdUnit scmProdUnit ;  
  14.     private List rows =new ArrayList();;  
  15.     private int page;  
  16.     private int total;  
  17.   
  18.     @Resource  
  19.     private ProdUnitService prodUnitService;  
  20.   
  21.     public String save() throws Exception {  
  22.         this.prodUnitService.save(this.scmProdUnit);  
  23.         return "save";  
  24.     }  
  25.   
  26.     public String update() throws Exception {  
  27.         this.prodUnitService.update(this.scmProdUnit);  
  28.         return "update";  
  29.     }  
  30.   
  31.     public String delete() throws Exception {  
  32.         this.prodUnitService.delete(scmProdUnit);  
  33.         return "delete";  
  34.     }  
  35.   
  36.     public String querybyID() throws Exception {  
  37.         scmProdUnit = prodUnitService.findById(ScmProdUnit.class, scmProdUnit  
  38.                 .getId());  
  39.         return "item";  
  40.     }  
  41.   
  42.     //@Action(value="querybyBuilde",results={@Result(type="json",name="success")})    
  43.     public String querybyBuilde() throws Exception {      
  44.         System.err.println("111111");  
  45.         StringBuffer sql = new StringBuffer();  
  46.   
  47.         sql.append("from ScmProdUnit where 1=1 ");  
  48.       
  49.         this.setRows(prodUnitService.findByConsion(sql.toString()));  
  50. //      this.setTotal(rows.size());  
  51.         System.err.println("2222222");  
  52.   
  53.         return SUCCESS;  
  54.   
  55.   
  56.     }  
  57.     @JSON(serialize = false)   
  58.     public ScmProdUnit getScmProdUnit() {  
  59.         return scmProdUnit;  
  60.     }  
  61.   
  62.     public void setScmProdUnit(ScmProdUnit scmProdUnit) {  
  63.         this.scmProdUnit = scmProdUnit;  
  64.     }  
  65.   
  66.   
  67.     public List getRows() {  
  68.         return rows;  
  69.     }  
  70.   
  71.     public void setRows(List rows) {  
  72.         this.rows = rows;  
  73.     }  
  74.   
  75.     public int getTotal() {  
  76.         return total;  
  77.     }  
  78.   
  79.     public void setTotal(int total) {  
  80.         this.total = total;  
  81.     }  
  82.   
  83.     public int getPage() {  
  84.         return page;  
  85.     }  
  86.   
  87.     public void setPage(int page) {  
  88.         this.page = page;  
  89.     }  
  90.   
  91. }  

jsp页面代码 
Java代码   收藏代码
  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>  
  2. <%@ taglib prefix="s" uri="/struts-tags"%>  
  3.   
  4. "-//W3C//DTD HTML 4.01 Transitional//EN">  
  5.   
  6.       
  7.   
  8.         test  
  9.         "pragma" content="no-cache">  
  10.         "cache-control" content="no-cache">  
  11.         "expires" content="0">  
  12.   
  13.           
  14.         "stylesheet" type="text/css" href="../js/themes/default/easyui.css">  
  15.         "stylesheet" type="text/css" href="../js/themes/icon.css">  
  16.         "text/javascript" src="../js/jquery-1.4.2.min.js">  
  17.         "text/javascript" src="../js/jquery.easyui.min.js">  
  18.         "text/javascript" src="../js/locale/easyui-lang-zh_CN.js">      
  19.       
  20.   
  21.       
  22.          "myForm" method="post">  
  23.            
  24.             
      
  25.                   
  26.                     test  
  27.                   
  28.                 "100%" border="0" cellpadding="1" cellspacing="4"  
  29.                     class="tableStyle">  
  30.                       
  31.                     "center">  
  32.                           
  33.                             "btnQuery" type="button" onClick="getjsontest()"  
  34.                                 class="button" value="查 询">                            
  35.                           
  36.                       
  37.                   
  38.               
  39.   
  40.   
  41.             "datalist">  
  42.   
  43. "result">
  
  •   
  •   
  • "color:red">  
  •       
  •   
  •   
  •       
  •            
  •   
  •       
  •   


  • jsp页面执行查询按钮,firebug里可以看到action返回数据 
    {"code":null,"name":null,"page":0,"rows":[{"code":"xiang","id":1,"name":"箱","remark":null},{"code":"ping","id":2,"name":"瓶","remark":null},{"code":"he","id":3,"name":"盒","remark":null}],"total":0} 
    但刚载入页面的时候, 
    $(function(){ 
    $('#datalist').datagrid({.....里这一段,url里设定的地址根本就没执行到action里面的方法, 

     
         
     

    调试时说 Invalid field value for field  rows,action方法没执行当然为空了,它直接转到result里的input了。现在纳闷就是为什么会转,我jsp里只是显示一个datagrid,别的什么也没有啊,本来以为js有问题,瞅半天也没发现啊,什么原因啊??????? 

    又试了试,发现action继承了actionSuppoet后有上面问题,去掉actionSuppoet就可以了,估计是actionSuppoet里校验出了问题,easyui的datagrid传给action的rows是int类型,但action定义了成了list,所以报类型转换错误,可这个grid插件得到返回的rows数据类型是json对象里的list,一种解决办法去掉变量rows,直接jsonObject里吧list给"rows"这个key,但我不想这样做,那应该怎么改啊?

    你可能感兴趣的:(ASP.NET/WEB)