package com.yz.dwr;

          /**
           * 用戶
           * 
          @author 小毅
           *
           
          */

          public class Users {
              
          private int uid;
              
          private String uname;
              
          private int sex;
              
          private Dept dep;
              
          public Users(int uid, String uname, int sex, Dept dep) {
                  
          super();
                  
          this.uid = uid;
                  
          this.uname = uname;
                  
          this.sex = sex;
                  
          this.dep = dep;
              }

              
          public Users() {
              }

              
          public int getUid() {
                  
          return uid;
              }

              
          public void setUid(int uid) {
                  
          this.uid = uid;
              }

              
          public String getUname() {
                  
          return uname;
              }

              
          public void setUname(String uname) {
                  
          this.uname = uname;
              }

              
          public int getSex() {
                  
          return sex;
              }

              
          public void setSex(int sex) {
                  
          this.sex = sex;
              }

              
          public Dept getDep() {
                  
          return dep;
              }

              
          public void setDep(Dept dep) {
                  
          this.dep = dep;
              }

          }

          package com.yz.dwr;
          import java.util.*;
          import com.yz.dwr.*;

          public class myControl {
              
          //演示在客戶端利用DWR框架獲得自定義對(duì)象以及集合中的對(duì)象的相關(guān)屬性值
              public List<Users> getAllUsers(){
                  List
          <Users> lst = new ArrayList<Users>();
                  
          //只是為了演示方便所以僅模仿從數(shù)據(jù)庫獲取數(shù)據(jù)獲得數(shù)據(jù)
                  for (int i = 1; i <= 10; i++{
                      lst.add(
          new Users(i,"xiaoyi"+i,i%2,new Dept(i+1,"部門"+i,"部門描述"+i)));
                  }

                  System.out.println(
          "集合的大小為--->"+lst.size());
                  
          return lst;
              }

          }
          package com.yz.dwr;

          /**
           * 部門
           * @小毅
           
          */

          public class Dept {
              
          private int deptId;
              
          private String deptName;
              
          private String description;
              
          public Dept(int deptId, String deptName, String description) {
                  
          super();
                  
          this.deptId = deptId;
                  
          this.deptName = deptName;
                  
          this.description = description;
              }

              
          public Dept() {
              }

              
          public int getDeptId() {
                  
          return deptId;
              }

              
          public void setDeptId(int deptId) {
                  
          this.deptId = deptId;
              }

              
          public String getDeptName() {
                  
          return deptName;
              }

              
          public void setDeptName(String deptName) {
                  
          this.deptName = deptName;
              }

              
          public String getDescription() {
                  
          return description;
              }

              
          public void setDescription(String description) {
                  
          this.description = description;
              }
              
          }


          dwr.xml
          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://www.getahead.ltd.uk/dwr/dwr20.dtd">
          <dwr>
              
          <allow>
                  
          <!--要判斷后臺(tái)是否已經(jīng)寫好,可以到測試也看一看  -->
                  
          <!-- 轉(zhuǎn)換器:dwr框架根據(jù)轉(zhuǎn)換器的配置自動(dòng)轉(zhuǎn)換成json對(duì)象
                      bean 以javabean的方式轉(zhuǎn)換 
                      所有參數(shù)如下:
                      自定義 Converters(轉(zhuǎn)換)
                      Bean/Object Converter
                      Array/Collection Converter
                      Dom Objects
                      Enum Converter
                  
          -->
                  
          <convert converter="bean" match="com.yz.dwr.Dept">
                      
          <!-- 這里可以加參數(shù),如果沒有加就會(huì)把該類的所有屬性轉(zhuǎn)為json對(duì)象,如果
                          加了參數(shù)表示只會(huì)轉(zhuǎn)換value包含的屬性值到j(luò)son對(duì)象,要轉(zhuǎn)換的各屬性用逗號(hào)隔開
                          <param name="include" value="uid,username"/>
                      
          -->
                  
          </convert>
                  
          <convert converter="bean" match="com.yz.dwr.Users"></convert>

                  
          <!-- javascript的對(duì)象是xiaoyi,create="new"是DWR通過new關(guān)鍵字創(chuàng)建value所對(duì)應(yīng)的
                      類的實(shí)例調(diào)用該類的方法 include表示只允許調(diào)用某些方法,exclude表示除了某方法之外其他
                      的都不能調(diào)用 如果都沒寫表示所有公有方法都能調(diào)用
                  
          -->
                  
          <create creator="new" javascript="xiaoyi">
                      
          <param name="class" value="com.yz.dwr.myControl"></param>
                  
          </create>
              
          </allow>
          </dwr>

          web.xml
              <servlet>
                  
          <servlet-name>dwr-invoker</servlet-name>
                  
          <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
                  
          <init-param>
                      
          <param-name>debug</param-name>
                      
          <param-value>true</param-value>
                  
          </init-param>
              
          </servlet>
              
          <servlet-mapping>
                  
          <servlet-name>dwr-invoker</servlet-name>
                  
          <url-pattern>/dwr/*</url-pattern>
              
          </servlet-mapping>

          <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
          <%
              
          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>
                  
          <base href="<%=basePath%>">

                  
          <title>DWR框架操作自定義類型</title>
                  
          <meta http-equiv="pragma" content="no-cache">
                  
          <meta http-equiv="cache-control" content="no-cache">
                  
          <meta http-equiv="expires" content="0">
                  
          <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
                  
          <meta http-equiv="description" content="This is my page">
                  
          <!--
              <link rel="stylesheet" type="text/css" href="styles.css">
              
          -->
                  
          <script type='text/javascript' src='/dwrTest2/dwr/interface/xiaoyi.js'></script>
                  
          <script type='text/javascript' src='/dwrTest2/dwr/engine.js'></script>
                  
          <script type='text/javascript' src='/dwrTest2/dwr/util.js'></script>
                  
          <script type="text/javascript">
                  
          //objInList是遠(yuǎn)程調(diào)用方法返回的集合循環(huán)遍歷的第i個(gè)對(duì)象
                      var deptName = function (objInList){
                          
          //返回第i個(gè)對(duì)象(用戶對(duì)象)的部門對(duì)象屬性的部門名稱
                          return objInList.dep.deptName;
                      }

                      
          function gets(){
                          
          //遠(yuǎn)程調(diào)用服務(wù)器的方法,并指定回調(diào)函數(shù)處理
                          xiaoyi.getAllUsers(deals);
                      }
          ;
                      
          function deals(rst){
                          
          //回調(diào)函數(shù)的參數(shù)為:遠(yuǎn)程調(diào)用的返回結(jié)果
                          //dwr.util.addOptions("sl",rst,"uid","uname");
                          dwr.util.addOptions("sl",rst,"uid",deptName);
                           
          //給tbody添加數(shù)據(jù)肯定是一個(gè)集合,即d 但是不知道有多少列,所以用【這里面寫幾個(gè)就表示幾個(gè)列 】 
                           dwr.util.addRows("tb",rst,["uid","uname",deptName]);
                          
                      }

                  
          </script>
              
          </head>

              
          <body>
                  
          <input type="button" value="添加內(nèi)容" onclick="gets();">
                  
          <select id="sl"></select>
                  
          <table >
                      
          <tbody id="tb"></tbody>
                  
          </table>
              
          </body>
          </html>

          Feedback

          # re: Dwr框架在客戶端遠(yuǎn)程調(diào)用方法返回自定義類型的例子[未登錄]  回復(fù)  更多評(píng)論   

          2008-11-27 09:52 by dragon

          請(qǐng)教下,為什么我從hibernate里面拉出來的數(shù)據(jù),返回前臺(tái)時(shí),第一項(xiàng)數(shù)據(jù)為空, 自定義類型中含有另一個(gè)自定義類型,就跟你寫的Users中含有dept類型的屬性,報(bào)錯(cuò)信息 s0 is not defined,使用firebug查看后臺(tái)傳到前數(shù)的數(shù)據(jù).dwr.engine._remoteHandleCallback('0','0',[null,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10]);
          麻煩兄弟指點(diǎn)下,謝謝

          # re: Dwr框架在客戶端遠(yuǎn)程調(diào)用方法返回自定義類型的例子  回復(fù)  更多評(píng)論   

          2009-02-19 08:18 by fdwwh
          這個(gè)例子很好!

          posts - 0, comments - 21, trackbacks - 0, articles - 101

          Copyright © H2O

          主站蜘蛛池模板: 全南县| 土默特左旗| 长阳| 会东县| 泽州县| 雷山县| 铜川市| 乌兰浩特市| 卢湾区| 永顺县| 通道| 门头沟区| 莆田市| 青浦区| 亳州市| 永城市| 新丰县| 尼勒克县| 白河县| 玛纳斯县| 曲水县| 赤水市| 安义县| 包头市| 江城| 双流县| 讷河市| 堆龙德庆县| 罗山县| 平定县| 筠连县| 宁海县| 渝北区| 梅河口市| 乐至县| 石棉县| 资阳市| 庆城县| 卓资县| 绥滨县| 嘉定区|