我们知道,webwork是类级别的拦截,一个类对应一个request上下文,webwork中的action中的一个方法可以对应一个url,acfion类中的所有方法共享action类中的所有变量。因此,当需要给url传递参数的时候,需要在action类中定义变量并给出相对应的getter和setter方法,才能在请求的时候传递参数。
使用ajax传递单个的参数非常简单,通过参数名:参数值的形式即可。
$.ajax({ type: 'post', url: '/yanggb.action', data: { id: 'yanggb', code: 'yanggb', name: 'yanggb' }, success: function() { alert('逐个传递单个参数成功'); } });
后台接收只需要定义单个普通类型的类成员属性即可。
private String id; public String getId() { return id; } public void setId(String id) { this.id = id; }
但是如果需要传递十几个参数呢,这样逐个定义类成员变量显然不现实,因此可以通过将这些类成员变量封装成一个对象类,然后定义一个类类型的类成员变量即可。
public class Yanggb { private string id; private String code; private String name; // 省略gettter和setter }
然后在action类中定义一个类类型的类成员变量,并添加相应的getter和setter方法。
private Yanggb yanggb; public Yangggb getYanggb() { return yanggb; } public void setYanggb(Yanggb yanggb) { this.yanggb = yanggb; }
最后,重点来了,在ajax中需要通过【对象名.属性名】的形式构造要传递的参数。
$.ajax({ type: 'post', url: '/yanggb.action', data: { ’yanggb.id': 'yanggb', 'yanggb.code': 'yanggb', 'yanggb.name': 'yanggb' }, success: function() { alert('一次性传递多个参数成功'); } });
关键在于这个【.】符号,相当于一个分组,webwork会自动识别这个符号并将相应的属性值设置到对应的类(分组)的属性中。
"随着年龄的增长会自动开启的,除了饮酒和做爱的合法权利,大概就只剩下生长之后的衰老。"