Buffalo是一个优秀的 Ajax 实现框架,它实现了Javascript Object与Java Object之间的双向序列化,并且提供了将JavaScript对象绑定到HTML元素的能力。这种绑定将是无侵入的,只需要在HTML元素中加入若干个不影响排版的属性,即可将数据与界面绑定。值得可喜的是这个优秀的框架是国内的大牛写的,业界类似的实现还有 DWR 框架。
下面是做项目的一个记录,实现HTML元素 Select 与 Java 对象自动数据绑定。
一、JAVA 类
下面是代码片断:
public Object[] listDictChannelDd() {
List list = new java.util.ArrayList();
for (int i=0;i<6;i++) {
DictValueBean bean = new DictValueBean();
bean.setLabel("广东Vnet_" + i);
bean.setValue(String.valueOf(i+1));
list.add(bean);
}
return list.toArray();
}
二、DictValueBean类的代码实现非常简单,它只有两个属性 label 和 value,并且有它们的 setter 和 getter 方法
public class DictValueBean implements Serializable {
private String value;
private String label;
/**
* @return Returns the label.
*/
public String getLabel() {
return label;
}
/**
* @param label The label to set.
*/
public void setLabel(String label) {
this.label = label;
}
/**
* @return Returns the value.
*/
public String getValue() {
return value;
}
/**
* @param value The value to set.
*/
public void setValue(String value) {
this.value = value;
}
}
三、下面是HTML代码片断:
<select name="payChannel" id="payChannel"
jtext="label" jvalue="value">
</select>
相信细心的读者,应该看出这里的jtext 和 jvalue 的作用了:没错,它就是对应 DictValueBean 类的 label 属性和 value 属性的。
四、下面是Javascript代码片断:
var springEndPoint = webContext + "/bfapp";//Ajax remote url
var buffalo = new Buffalo(springEndPoint);
buffalo.bindReply('gdvnetAutopayService.listDictChannelDd',[],'payChannel');
这里的 'payChannel'是对应HTML页面的 select 元素的 id 名称。
这样,就完成我们的HTML Select元素与Java Object的数据绑定了。
原帖: http://huaronghu.spaces.live.com:80/blog/cns!b9a68e1c1ca857ad!132.entry