三。DWR中的JavaScript简介
3。1 使用DWR实现远程方法调用:可以通过把回调函数放在参数列表里,也可以把回调函数放到元数据对象里。
如:* Remote.getData(42, function(str) { alert(str); });//简单的回调函数
*调用元数据对象:Remote.getData(42, { callback:function(str) { alert(str); } });
3。2 engine.js 功能
★选项:①DWREngine.setX() 函数来设置全局属性或者在单次调用级别上;如:DWREngine.setTimeout(1000); Remote.singleMethod(params, { callback:function(data) { ... }, timeout:2000 });②批量执行:DWREngine.beginBatch(); Remote.methodInBatch1(params, callback1); Remote.methodInBatch2(params, callback2); DWREngine.endBatch({ timeout:3000 });** callback和exceptionHandler两个选项只能在单次调用中使用,不能用于批量调用。③错误警告:可以使用DWREngine.setErrorHandler(function)来改变错误处理方式,同样通过DWREngine.setWarningHandler(function)来改变警告处理方式。
如:Remote.method(params, { callback:function(data) { alert("it worked"); }, errorHandler:function(message) { alert("it broke"); }, timeout:1000 });
④远程调用:指定让XHR异步调用DWREngine.setAsync(true); 或者设置单次调用同步: Remote.method(params, { callback:function(data) { ... }, async:true });
3。3 util.js 功能
3.31 DWRUtil方法介绍:★addOptions and removeAllOptions根据输入填充/删除列表;★addRows and removeAllRows操作table;★DWRUtil.getValue(id):可以从HTML元素中取出其中的值。★DWRUtil.getText(id):取得显示的文字.DWRUtil.getValues() : 除了输入的是包含name/value对的javascript对象。name是HTML元素的ID,value会被更改为这些ID对象元素的内容。DWRUtil.setValues()name是HTML元素的ID,value是你想要设置给相应的元素的值。★DWRUtil.onReturn:当按下return键时,得到通知”
可以用这样代码实现:
<input type="text" οnkeypress="DWRUtil.onReturn(event, submitFunction)"/>
<input type="button" οnclick="submitFunction()"/>
★DWRUtil.selectRange :选择一个输入框中的一定范围的文字
★DWRUtil.toDescriptiveString :DWRUtil.toDescriptiveString()函数比默认的toString()更好。第一个参数是要调试的对象,第二个参数是可选的,用来指定内容深入的层次:
3.34 DWR的类静态方法及单例模式应用
1、DWR中的类的静态方法配置如下:
<!-- 静态应用 -->
<create creator="none" javascript="TestStatic">
<param name="class" value="com.jzc3.TestStatic" />
</create>
2、DWR中的类的单例模式配置如下:
<!-- 单例应用 -->
<create creator="script" javascript="ScriptClass">
<param name="language" value="beanshell" />
<param name="script">
import dwr.script.ScriptClass;
return ScriptClass.getInstance();
</param>
</create>
四。DWR Annotations
4。1 *远程访问类:使用@Create和@RemoteMethod标注;
*对象转换要使一个简单的bean类可以被远程访问, 使用@Convert和@RemoteProperty标注:
*从其他的URL读取数据:WebContextFactory.get().forwardToString("/forward.jsp");