我的java代码是这样的:package com.approval.action;import java.util.List;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import com.approval.cordys.client.CordysWSClientCommon;
import com.approval.model.common.ApprMainAll;public class GetTaskAction
{此处省略该方法代码,主要功能是给applist赋值
}

/**
 *用于配置struts.xml的方法,以返回一个jsonArray数据给ext前台
 * @return
 */
public String getJsonArray(){
/**
 * jsonArray用于在extjs中显示列表,
 * 其中task为每一个task的json对象,
 * 而taskArray为所要传输到前台的Array。
 */
/* for(int i = 0;i<appList.size();i++)
{
task.put("ID"+i, appList.get(i).getTaskId().toString());
//taskArray.add(i, task);
task.put("class"+i, appList.get(i).getClass().toString());
taskArray.add(i, task);
task.clear();
}
if(!taskArray.isEmpty()){
return "success";
}else{
return "fail";
}*/
this.setTotalCount(appList.size());
JSONArray array = JSONArray.fromObject(appList);
this.jsonString = "{totalCount:" + this.getTotalCount() + ",results:" + array.toString() + "}";
return "SUCCESS";
}}然后,进行struts.xml的配置,我的配置是这样的:
<struts> 
    <package name="com.approval.action" extends="struts-default"> 
        <action name="get_task" class="com.approval.action.GetTaskAction" method="getTask"> 
            <result name="true">/ext-2.0.2/pages/get_task.jsp</result> 
            <result name="null">/ext-2.0.2/pages/no_task.jsp</result>
        </action>
     </package> 
     <package name="com.approval.action" extends="json-default"> 
        <action name="get_task_json" class="com.approval.action.GetTaskAction" method="getJsonArray">
         <result type="json" name="SUCCESS"></result>
        </action>
        </package>
</struts> JSP中的代码如下所示:
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@taglib prefix="s" uri="/struts-tags" %>
    <s:property value="jsonString" escape="false"/>
        <%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title>EXT2.0框架测试</title>
<link rel="stylesheet" href="ext-2.0.2/resources/css/ext-all.css" type="text/css" media="screen" charset="utf-8" />
<link rel="stylesheet" href="html.css" type="text/css" media="screen" charset="utf-8" />
<link rel="stylesheet" href="index.css" />
<script src="ext-2.0.2/adapter/jquery/jquery.js" type="text/javascript" charset="utf-8"></script>
<script src="ext-2.0.2/adapter/jquery/ext-jquery-adapter.js" type="text/javascript" charset="utf-8"></script>
<script src="ext-2.0.2/ext-all.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript" src="ext-2.0.2/scripts/tasklisttest.js"></script>
</head>
<body>
<div id="grid"></div>
</body>
</html>
然后是tasklisttest.js中得代码是这样的:
Ext.onReady(function(){
   // Ext.BLANK_IMAGE_URL = 'ext/resources/images/default/s.gif'; 
    Ext.QuickTips.init();
    var xg = Ext.grid;
    //这里就是设置解析格式的地方,一定要和你的Model一样,要不然可是什么都得不到哦~~~~
    var rd = new Ext.data.JsonReader({
                //总记录数
                totalProperty: 'totalCount', 
                //哪儿是数据的头,可以看action里面是怎么定义数据格式的,这里就是如何解析的           
                    root: 'results', 
                //有那些字段呢?
                fields:[
                         {name:'taskId'},
                         {name:'AppMain'},
                         {name:'StartDate'}
                         ]
                                     });
     var ds = new Ext.data.Store({
                                    proxy: new Ext.data.HttpProxy
({url: 'get_task_json.action',method:'POST'}),
//Url很关键,我就是因为没配好这个,POST方法很重要,你可以省略,让你看下错误也行的!耽误了一大堆时间!
                                    reader:rd
                                });
     ds.load();
     var sm =new xg.CheckboxSelectionModel(); //CheckBox选择列
     var cm =new xg.ColumnModel([
                                  new Ext.grid.RowNumberer(), //行号列 
                                  sm,
                                  {id:'orderId',header: "taskId", dataIndex: 'taskId'},
                                  {header:"clas",dataIndex:'startDate'},
                                  {header:"appmain",dataIndex:'AppMain'}
                                 ]);
                                 cm.defaultSortable = true;
    ////////////////////////////////////////////////////////////////////////////////////////
    // OrderGrid 
    ////////////////////////////////////////////////////////////////////////////////////////    var ordergrid = new xg.GridPanel({
                                  ds: ds,
                                  sm: sm, 
                                  cm: cm, 
                                  width:1000,
                                  height:500,
                                  frame:true,
                                  title:'选择处理以下待处理任务进行处理',
                                  renderTo: document.body
                                 });
    ordergrid.render();});
不知道哪里出了问题,进行debug时候JS貌似不执行store中得url,不会跳转到java代码中的action。有哪位大神,出来帮帮忙啊, 不胜赶紧!在此跪求了!

解决方案 »

  1.   

    js代码应该是没有什么问题的 但是
    1、jsp页面中少引了一个 Ext-base.js
    2、先看下你的action的路径在js中写的对不
    3、配置文件需要修改
    <package name="com.approval.action" extends="json-default">  
      <action name="get_task_json" class="com.approval.action.GetTaskAction" method="getJsonArray">
      <result></result>
      </action>
      </package>另外 在你的Java后台代码public String getJsonArray()中 不能return 这个是异步的操作 是需要write到前台的 所以要将return.... 都换成 response.getWriter().write('.....')
      

  2.   

    http://blog.csdn.net/huaye2007/article/details/6025864
      

  3.   

    function PaymentPost(){ $.ajax({ type:"POST", url: "http://localhost:8301/social/rest/payment/727/credit/5/OrderID009988712jd/oiowuoiuqouopq", data: '{"OrderInfo":"Shit我想中百万可以吗エターナルフロンティアを始めました","Signature":"oiowuoiuqouopq"}', success: function (data) { processor.closePayment(); alert('data'); } }); }
      

  4.   


    现在的问题是我在getJsonArray()方法里面加了个断点,执行的时候根本就不会去读取Action。请问如何解决啊?