DWR笔记2

来源:互联网 发布:淘宝清仓活动方案 编辑:程序博客网 时间:2024/06/01 08:42
用javascript对象去匹配 java 对象
public class Remote {
 
public void setPerson(Person p) {
   
this.person = p;
  }
}

And Classes Person looks like
this:
public Person {
 
private String name;
 
private int age;
 
private Date[] appointments;
 
// getters and setters ...一定要补上getter与setter
}


//Then you can call this from Javascript like this:
var p = {
  name:
"Fred Bloggs",
  age:
42,
  appointments:[
new Date(), new Date("1 Jan 2008") ]
};
Remote.setPerson(p);

因为setPerson()使用 VOID 修饰所以 在javascript中不不需要回调函数,即便你写了回调函数
,DWR也不会将任何值给传回来
当然 你也可以这样写
Remote.setPerson(
null,p);


异步Loading提示
DWR标准情况下是展现GMAIL样式的Loading消息提示,你可以在page loaded之后调用
loading消息提示,但不可以在page onload之前调用.因为loading的原理还是用一个hide
的层来包容loading消息.
在DWR中只要很简单的一步就可以完成GMAIL样式的loading设置
<head>
 
<script>
  function init() {
    DWRUtil.useLoadingMessage();
  }
 
</script>
  ...
</head>
<body onload="init();">


当然有些时候可能无法去修改
<BODY>元素,那么你可以用CMS方式来修改
<script>
function init() {
  DWRUtil.useLoadingMessage();
}

if (window.addEventListener) {
  window.addEventListener(
"load", init, false);
}
else if (window.attachEvent) {
  window.attachEvent(
"onload", init);
}
else {
  window.onload
= init;
}
</script>

你也可以动态的创建一个层(with id
="disabledZone") ,它将包含提示消息
下面是2个改进的程序

第一个允许你修改属于你自己的提示消息
function useLoadingMessage(message) {
  var loadingMessage;
 
if (message) loadingMessage = message;
 
else loadingMessage = "Loading";

  DWREngine.setPreHook(function() {
    var disabledZone
= $('disabledZone');
   
if (!disabledZone) {
      disabledZone
= document.createElement('div');
      disabledZone.setAttribute(
'id', 'disabledZone');
      disabledZone.style.position
= "absolute";
      disabledZone.style.zIndex
= "1000";
      disabledZone.style.left
= "0px";
      disabledZone.style.top
= "0px";
      disabledZone.style.width
= "100%";
      disabledZone.style.height
= "100%";
      document.body.appendChild(disabledZone);
      var messageZone
= document.createElement('div');
      messageZone.setAttribute(
'id', 'messageZone');
      messageZone.style.position
= "absolute";
      messageZone.style.top
= "0px";
      messageZone.style.right
= "0px";
      messageZone.style.background
= "red";
      messageZone.style.color
= "white";
      messageZone.style.fontFamily
= "Arial,Helvetica,sans-serif";
      messageZone.style.padding
= "4px";
      disabledZone.appendChild(messageZone);
      var text
= document.createTextNode(loadingMessage);
      messageZone.appendChild(text);
    }
   
else {
      $(
'messageZone').innerHTML = loadingMessage;
      disabledZone.style.visibility
= 'visible';
    }
  });

  DWREngine.setPostHook(function() {
    $(
'disabledZone').style.visibility = 'hidden';
  });
}


第2个你能使用图片作为提示消息
function useLoadingImage(imageSrc) {
  var loadingImage;
 
if (imageSrc) loadingImage = imageSrc;
 
else loadingImage = "ajax-loader.gif";
  DWREngine.setPreHook(function() {
    var disabledImageZone
= $('disabledImageZone');
   
if (!disabledImageZone) {
      disabledImageZone
= document.createElement('div');
      disabledImageZone.setAttribute(
'id', 'disabledImageZone');
      disabledImageZone.style.position
= "absolute";
      disabledImageZone.style.zIndex
= "1000";
      disabledImageZone.style.left
= "0px";
      disabledImageZone.style.top
= "0px";
      disabledImageZone.style.width
= "100%";
      disabledImageZone.style.height
= "100%";
      var imageZone
= document.createElement('img');
      imageZone.setAttribute(
'id','imageZone');
      imageZone.setAttribute(
'src',imageSrc);
      imageZone.style.position
= "absolute";
      imageZone.style.top
= "0px";
      imageZone.style.right
= "0px";
      disabledImageZone.appendChild(imageZone);
      document.body.appendChild(disabledImageZone);
    }
   
else {
      $(
'imageZone').src = imageSrc;
      disabledImageZone.style.visibility
= 'visible';
    }
  });
  DWREngine.setPostHook(function() {
    $(
'disabledImageZone').style.visibility = 'hidden';
  });
}


DWRUtil.toDescriptiveString()用于debug 页面上的任何Html控件
DWRUtil.toDescriptiveString(p1,p2)
其中p1 代表你将要bebug的控件id名称
p2 (
int={0,1,2})
其中
0 返回单行调试信息
    
1/2 返回多行调试信息
 
原创粉丝点击