此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
楼主【wtd】截止到2008-07-04 16:59:11的历史汇总数据(不包括此帖):
发帖的总数量:11                       发帖的总分数:480                      
结贴的总数量:10                       结贴的总分数:380                      
无满意结贴数:3                        无满意结贴分:90                       
未结的帖子数:1                        未结的总分数:100                      
结贴的百分比:90.91 %               结分的百分比:79.17 %                  
无满意结贴率:30.00 %               无满意结分率:23.68 %                  
值得尊敬

解决方案 »

  1.   

    Json~~资料一:动态数据的一个实际的例子。很详细:
    http://www.zhuaxia.com/item/665011388/?logId=207资料二:比较详细的介绍struts2与json整合的一篇文章。之中涉及到了YUI。看下也有好处
    http://www.javaeye.com/topic/149891资料三:啥是Json
    http://dev2dev.bea.com.cn/techdoc/2007/03/java-soa-introduction-json.html资料四:甚至整合了ORM的一个例子。我没有尝试过。也贡献出来吧
    http://blog.csdn.net/myloon/archive/2007/11/08/1873652.aspx资料五:这个里面有用的不多。但是有一个整合的源码
    http://www.javaeye.com/topic/149457不算资料的资料,除了Json的另外一个解决方案--DWR
    我比较倾向于这种方案。但是没有深入的研究过。
    http://space.xuancheng.org/index.php/uid-476-action-viewspace-itemid-1290OVER~~~
      

  2.   

    用JSON把输出格式进行转换,最好不要用struts自带的 JSON 可能会出问题 
    用类直接把输出的数组进行转换 后台不难,我有代码,LZ要的话,我跟贴贴出,主要是前端的调试很麻烦,struts2和EXT整合 不是难到后台
    主要是前端页面显示。
      

  3.   

    好啊,贴出来吧,我想用struts1.3的.不知道有啥区别. 贴后分全给你,呵呵
      

  4.   

    服务器端struts主要实现对数据的交换工作,客户端跟struts提交数据或者索要数据。
    ext2对JSON数据的处理支持很好,而且相比XML,JSON具有更好的处理性能。我前段是用struts2来做的,下面是一个action的例子:package action;import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;import com.googlecode.jsonplugin.annotations.JSON;
    import common.CacheManager;
    import domain.ListRange;
    import domain.User;
    import UserService;
    import ErrorMessage;public class UserAction extends BaseActionSupport{
    private UserService userService;
    private int userid;
    private String name;
    private String loginid;
    private String usertype; public String list(){
    listrange=new ListRange();
    List l=cacheManager.getUsersList();
    if (l==null||l.size()==0){
    listrange.setTotalSize(0);
    return SUCCESS;
    }
    listrange.setTotalSize(l.size());
    List l2=null;
    if (limit<=0)
    l2=l;
    else{
    l2=new ArrayList();
    for (int i=start;i<start+limit&&i<l.size();i++){
    l2.add(l.get(i));
    }
    }
    listrange.setData(l2.toArray()); return SUCCESS;
    } public String save(){
    int rtn=0;
    if (userid==0){
    rtn=userService.addUser(loginid, name, usertype);
    } else {
    User user=new User();
    user.setUserid(userid);
    user.setName(name);
    user.setUsertype(usertype);
    user.setLoginid(loginid);
    rtn=userService.updateUser(user);
    }
    setReturn(rtn);
    return SUCCESS;
    } @JSON(serialize=false)
    public String getLoginid() {
    return loginid;
    }
    public void setLoginid(String loginid) {
    this.loginid = loginid;
    }
    @JSON(serialize=false)
    public String getName() {
    return name;
    }
    public void setName(String name) {
    this.name = name;
    }
    @JSON(serialize=false)
    public String getUsertype() {
    return usertype;
    }
    public void setUsertype(String usertype) {
    this.usertype = usertype;
    }
    public void setUserService(UserService userService) {
    this.userService = userService;
    } @JSON(serialize=true)
    public int getUserid() {
    return userid;
    } public void setUserid(int userid) {
    this.userid = userid;
    } @JSON(name="list")
    public ListRange getListrange() {
    return listrange;
    } @JSON
    public boolean isFailure() {
    return failure;
    }
    @JSON
    public boolean isSuccess() {
    return success;
    }
    @JSON
    public String getInfo() {
    return info;
    }}
    上面的例子显示了取用户列表(分页)和保存用户的功能。
    用到了com.googlecode.jsonplugin(开源JSON插件),在struts的配置文件设置:
            
            <action name="user" class="userAction">   
                <result type="json"/>   
            </action>          指出返回的类型为json这样,struts action返回给客户端的就是一个JSON数据包
    ext2处理这种JSON数据包支持很好。
      

  5.   

    struts 1的做法应该类似于上面的struts2的做法
      

  6.   

    public ActionForward jsonForTxry(ActionMapping mapping,ActionForm form,
    HttpServletRequest request,HttpServletResponse response) throws ParseException{
    LazyValidatorForm txryjcForm=(LazyValidatorForm)form;

    int start=(txryjcForm.get("start")==null)?1:(Integer)txryjcForm.get("start");
    int size=(txryjcForm.get("limit")==null)?10:(Integer)txryjcForm.get("limit");

    String qdwdm=(txryjcForm.get("qdwdm")==null)?"":txryjcForm.get("qdwdm").toString();
    String zdwdm=(txryjcForm.get("zdwdm")==null)?"":txryjcForm.get("qdwdm").toString();
    String bbrq=(txryjcForm.get("bbrq")==null)?"":txryjcForm.get("qdwdm").toString();
    String lx60=(txryjcForm.get("lx60")==null)?"":txryjcForm.get("qdwdm").toString();
    String lx55=(txryjcForm.get("lx55")==null)?"":txryjcForm.get("qdwdm").toString();
    String lx50=(txryjcForm.get("lx50")==null)?"":txryjcForm.get("qdwdm").toString();
    String bdq=(txryjcForm.get("bdq")==null)?"":txryjcForm.get("qdwdm").toString();

    String qxbm=UserInfo.getInstance().getQxbm();

    Map<Object,Object> map=new HashMap<Object,Object>();
    map.put("qdwdm", qdwdm);
    map.put("zdwdm", zdwdm);
    map.put("bbrq",new java.sql.Date(new SimpleDateFormat("yyyy/mm/dd").parse(bbrq).getTime()));     
    map.put("lx60", lx60);
    map.put("lx55", lx55);
    map.put("lx50", lx50);
    map.put("bdq", bdq);
    map.put("qxdm", qxbm);

    Page queryPage=txryjc.pagedQuery(GrViewTxryjc.class, map, start / size + 1, size);

    JSONObject json=new JSONObject();
    try{
    json.put("Total", queryPage.getTotalCount());
    json.put("Limit", size);
    JSONArray list=new JSONArray();
    List rows=(List)queryPage.getResult();
    for(int i=0;i<rows.size();i++){
    GrViewTxryjc grViewTxryjc=(GrViewTxryjc)rows.get(i);
    Map convert=new HashMap();
    map.put("jclb", grViewTxryjc.getJclb());
    map.put("dwdm", grViewTxryjc.getDwdm());
    map.put("dwmc", grViewTxryjc.getDwmc());
    map.put("xm", grViewTxryjc.getXm());
    map.put("xb", grViewTxryjc.getXb());
    map.put("bzhm", grViewTxryjc.getBzhm());
    map.put("csrq", grViewTxryjc.getCsrq());
    list.put(map);
    json.put("txryjc", list);
    }
    }
    catch(JSONException e){
    e.printStackTrace();
    System.out.println("错误:"+e.getMessage());
    }
    this.renderText(response, json.toString());
    return null;
    }//在父类的类中
    protected void renderText(HttpServletResponse response, String text) {
    render(response,text,"text/plain;charset=UTF-8");
    }
    protected void render(HttpServletResponse response, String text,String contentType){
    try {
    response.setContentType(contentType);
    response.getWriter().write(text);
    } catch (IOException e) {
    log.error(e.getMessage(), e);
    }
    }这个是手动转的JSON 是struts1.X的写法  2.0也可以这么转,用struts2.0的JSON转换也可以(有时候好像有问题)
    要用上面的写法要去下个 JSON的JAR文件  网上有~~
      

  7.   

    主要是页面 EXT 要解析JSON,不对应的话 页面是没值的
      

  8.   

    http://www.javaeye.com/topic/149891