论坛首页 Web前端技术论坛

DWR如何与webwork结合使用

浏览 9879 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-03-01  
DWR
webwork是一个MVC框架,2.2.3版本已经集成了dojo和dwr,使用dwr来做客户端验证,但是我想知道更多的如何结合使用DWR和ww.有没有什么这方面的最佳实践?
   发表时间:2007-03-01  
到dwr官方网站上有介绍,和一个台湾的哥们写的dwr例子
0 请登录后投票
   发表时间:2007-03-01  
他的PPT上只是简单提到了和ww在action层次的集成,太不详细.并没有这方面的指导
0 请登录后投票
   发表时间:2007-03-01  
webwork的result 你想怎么用 就怎么写一个呗
0 请登录后投票
   发表时间:2007-03-01  
hehe,路过.顺便问下.dwr的版本和框架的版本有关吗?
0 请登录后投票
   发表时间:2007-03-02  
jianfeng008cn 写道
webwork的result 你想怎么用 就怎么写一个呗

还是不懂,能否详细点.webwork是一个MVC,在xwork.xml中配置action以及action执行后的result,而dwr是从javascript中调用java方法,我不知道如何把他们各自的优势结合起来.
0 请登录后投票
   发表时间:2007-03-02  
sunfy 写道
他的PPT上只是简单提到了和ww在action层次的集成,太不详细.并没有这方面的指导


我没看过这个东西,我的想法是使用dwr但是不用他的servlet,即不在javascript中调用服务端service中的方法,而是和普通的ww的action一样的,然后定义个ww的result ,在这个result中进行java对象到js对象的转换,然后输出给xmlhttprequest来接收。

贴个伪代码吧,
引用


import java.io.IOException;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.opensymphony.webwork.ServletActionContext;
import com.opensymphony.webwork.dispatcher.WebWorkResultSupport;
import com.opensymphony.xwork.ActionInvocation;



public class AjaxJsonResult extends WebWorkResultSupport {
private static final long serialVersionUID = -3778230771704661631L;
Log log = LogFactory.getLog(this.getClass());
protected ActionInvocation invocation;
   
    public void doExecute(String location, ActionInvocation invocation) throws IOException {
Map<String, Object> map = new HashMap<String, Object>();
Enumeration names = ServletActionContext.getRequest().getAttributeNames();
while(names.hasMoreElements()){
      String name = (String) names.nextElement();
if(name.indexOf('.')<0){             
//表示是我们自己set到request中去的对象
Object obj = ServletActionContext.getRequest().getAttribute(name);
map.put(name,obj);
  }
}
StringBuffer jsResult=new DWRJsonMarshaller().marshall(map);
log.info(jsResult.toString());
ServletActionContext.getResponse().setContentType("text/plain charset=\"utf-8\"");
ServletActionContext.getResponse().getWriter().write(jsResult.toString());
    }
   
}


这句 StringBuffer jsResult=new DWRJsonMarshaller().marshall(map); 只是意思意思哦
0 请登录后投票
   发表时间:2007-03-04  
非常很感谢楼上的热情回答,我明白一点了.不过这样,dwr服务端好像根本没有用.就是说这样的方式,我看不到dwr在哪里.而且dwr的主要亮点就是javascript访问java方法,这里去掉了,那么仍然有dwr使用的意义吗
0 请登录后投票
   发表时间:2007-03-04  
sunfy 写道
非常很感谢楼上的热情回答,我明白一点了.不过这样,dwr服务端好像根本没有用.就是说这样的方式,我看不到dwr在哪里.而且dwr的主要亮点就是javascript访问java方法,这里去掉了,那么仍然有dwr使用的意义吗


javascript访问java方法,那你用javascript提交action难道就不算了:)

dwr把java对象转化成js对象,你的javascript就可以访问java对象了,这和javascript访问java方法的本质是一样的哦
0 请登录后投票
   发表时间:2007-03-05  
你说的有些道理,但是异步怎么办?DWR提供的js访问java的方式好像封装了XMLHttpRequest对象的异步处理过程.在js中提交action的话就得自己处理或者采用别的toolkit.
你这里说的让我还是看不到DWR在哪里
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics