本文共 928 字,大约阅读时间需要 3 分钟。
使用SSH开发留言板的审核功能时,因为要做批量审核,在action中获取了所有未审核的信息,前台需要对应每一个信息生成一个单选框,即通过,删除,不处理.其中遇到了三个问题: 1.迭代器中的s:radio 的name命名问题,name必要根据索引动态改变,否则迭代器中的单选框都在一个组里面只能选一个. 2.获取到所有的值如何传回来,网上大多数都是说用js拼接成字符串传入再拆分,或者通过requset来传值拆分. 3.获取到值之后,处理每个实体对象时报空指针异常.
private ArrayListoplist;private List messageList;
messageList为未处理的留言集合.对于问题二,我们生成一个长度为messageList大小的集合oplist,并置初值为0;
this.oplist = new ArrayList();for(int i=0;i
对于第一个问题,我们使用ognl表达式动态的对s:radio 的name赋值
赋值完成后通过浏览器查看源代码发现name变成了oplist[0],oplist[1]..... 之后在action中对循环获取messageList中的元素,根据oplist.get(i)的值对实体进行操作就好了.
for(int i=0;i
至此,传值问题完美解决.
问题三: 但在这里获取mb对象时回报空指针异常,原因为action并不是一个单例模式,而是用一次申请一次,而提交表单之后messageList的值为null,此时对messageList的值进行操作,就会报空指针异常了. 所以,我们在for循环前重新获取一下messageList的值.this.messageList = mdao.getNotAuditMessage();
最后返回审核页面的时候别忘了重置messageList和oplist的值
this.messageList = mdao.getNotAuditMessage();oplist.clear();for(int i=0;i
转载地址:http://sehji.baihongyu.com/