[请支持原创]
因为之前一直在使用Struts发现老是感觉有点别扭,所以参考了.net下面的控件事件,然后希望能通过自己封装的一套自定义标签来减少开发工作量(PS:毕竟本人希望多腾出点时间疼下老婆,打下dota。亲,你们懂的)
废话少说,下面是我在页面调用select控件的方法
name: 这里表示生成<select>标签的ID和Name
bind: 这里表示在显示生成<select>标签时,会触发的方法
下面是我要调用的selectStudent方法:
@SelectBind(text="name", value="index", defaultValue="2")
public ArrayList<Child> selectStudent(ServletRequestInfo req){
Child child = new Child();
child.setIndex(1);
child.setName("test");
Child child1 = new Child();
child1.setIndex(2);
child1.setName("test2");
Child child2 = new Child();
child2.setIndex(0);
child2.setName("test3");
ArrayList<Child> list = new ArrayList<Child>();
list.add(child);
list.add(child1);
list.add(child2);
return list;
}
@SelectBind(text="name", value="userID", defaultValue="4")
public ArrayList<User> selectUser(ServletRequestInfo req){
User user = new User();
user.setName("kevin");
user.setUserID(3);
User user1 = new User();
user1.setName("alex");
user1.setUserID(4);
User user2 = new User();
user2.setName("Darin");
user2.setUserID(1);
ArrayList<User> list = new ArrayList<User>();
list.add(user);
list.add(user1);
list.add(user2);
return list;
}
重点在于这个名为SelectBind的Annotation。它主要负责的是,根据返回的对象类型和是设置对应的字段的get方法放置到对应的text和value值中去。
text存放的是返回对象的某个字段名,对应的是生成<select>标记下的文本值;
value存放的,同样是返回对象的某个字段名,对应的是生成<select>标记下的对应值;
如果想要绑定其它值,直接改成你想绑定的方法就行了,例如上面的selectUser方法
图1为绑定selectStudent的展示, 图2为绑定selectUser
效果图如下:
整理下,会发个demo上来,欢迎各种丢砖.......