一个通过struts2获取多选框(checkbox)的坑

  昨晚睡前写了一个小功能,由View层提交一组userID,交给Controller对一组用户的状态进行update。事务放在了Service层,逻辑是先根据userID把PO类get出来,然后修改其中一个值,再update回去。Debug的时候却发现,每次都只能更新第一条记录,打印出来的SQl就只有第一个userID有select和update,后面的都只有select,返回的结果是null。当时第一个反应就是锁表了,然后各种调试事务的参数...

  后来终于发现,跟事务什么的半毛钱关系都没有。

  一开始使用String来获取表单提交的checkbox值,像这样

private String userIDList;
public void setUserIDList(String userIDList) {
  this.userIDList = userIDList;
}

  打印出来的结果像这样

id2, id4, id5, id6

  然后按逗号分割

String userIDs[] = userIDList.split(",");

  再打印

id2
 id4
 id5
 id6

  好了该死的空格出现了。原因不明。

  解决办法如下:

private List<String> userIDs;
/**
 * 因代理需多次获取List并给List赋值,需get方法
 */
public List<String> getUserIDs() {
  return userIDs;
}
public void setUserIDs(List<String> userIDs) {
  this.userIDs = userIDs;
}


你可能感兴趣的:(struts2,checkbox,多选框)