主要是修改页面,
页面上有个 公司类型的<s:select>,list当然就是个集合了
提交错误表单到服务器被拦截回来后,<s:select>的数据就没了,这个list也没了
不知道怎么解决这个问题,困扰了我好久
开始用ajax做的,但是不能把现在的 公司类型 设为selected
当然用js的话肯定能实现就是比较麻烦,不知道struts2有没有什么方法保存原有的集合数据
页面上有个 公司类型的<s:select>,list当然就是个集合了
提交错误表单到服务器被拦截回来后,<s:select>的数据就没了,这个list也没了
不知道怎么解决这个问题,困扰了我好久
开始用ajax做的,但是不能把现在的 公司类型 设为selected
当然用js的话肯定能实现就是比较麻烦,不知道struts2有没有什么方法保存原有的集合数据
你是Redirect还是forward?
private String id;
private String name;
两个属性有get/set方法。
2.Action:public List<User> getListInfo() { List<User> lst = new ArrayList<User>();
lst = dao.getUserAll();
return lst;
}3.jsp
<s:select name="test" list="listInfo" listKey="id" listValue="name"/>总结:
如果校验失败,返回到jsp,在处理<s:select/>标签会找getListInfo方法,所以数据就保存住了。
我提交错误表单后那list就没了
提交错误表单到服务器被拦截回来后, <s:select>的数据就没了,这个list也没了
原因很清楚,就是你验证没有通过。然后跳转到你相应的提示错误信息的页面。这里就是
你当前的页面了,既然是执行验证后提示错误 才没有list值。那么你可以在验证的方法
里面把list也设值一遍。
也就是:
getList() {
setList(...);
跳转到显示页面,也就是表单,公司类型的 <s:select>,
}
validate() {
setList(...);//同样setList一下
进入时就有值了
}
struts2 验证是这样的,当用户提交表单,struts会找到对应的action,首先会执行action对应表单的
名称所对应的“验证方法”,如果验证成功,就执行action的表单方法,然后就跳转到成功的视图组件。否则就会跳转到 input="错误页面"多在当前表单页面。而不继续执行action的表单对应的方法。