struts 2 页面进行validation时,回显list控件内容问题。

wylsx 2008-07-22 03:21:49
当前页面有select控件 与list对象绑定,还有一些输入框,单选按钮,复选框,
在用validation(actionname_requestname_validation.xml)验证时,如果有错误就回到原页面,但是select控件的内容不能保存。
就时所谓的回显问题。

大家有没有好的解决方法?
...全文
468 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
chinahgf 2008-10-24
  • 打赏
  • 举报
回复
没必要那么麻烦吧。只需要把你的struts配置文件中的input属性改在查询的Action不就OK了。
wylsx 2008-08-20
  • 打赏
  • 举报
回复
目前我们用session回显数据,因为除了浪费点内存外,还有别的缺陷嘛???
wylsx 2008-07-23
  • 打赏
  • 举报
回复
明确一下我的问题,如果validation不通过的话,肯定要返回原页面的,但原页面的select标签的信息如何取得

如果放到Preparable的prepare方法里 也可以,不过如果已经通过了validation,就不返回原页面了,就没有必要取得原页面的信息了。
Landor2004 2008-07-23
  • 打赏
  • 举报
回复
prepare就是为这个做准备的,validate通过的话,就转到其他地方了,也没有再初始化啊

你的意见要建立在明白struts2的拦截器的都是干嘛的的基础上的
Landor2004 2008-07-23
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 wylsx 的回复:]
好的,还有更好的方式吗
[/Quote]

这已经很好了,呵呵
wylsx 2008-07-23
  • 打赏
  • 举报
回复
好的,还有更好的方式吗
Landor2004 2008-07-23
  • 打赏
  • 举报
回复
你这样更好些,避免了多余的查询
Landor2004 2008-07-23
  • 打赏
  • 举报
回复
明确一下我的问题,如果validation不通过的话,肯定要返回原页面的,但原页面的select标签的信息如何取得?
通过prepare取得,struts2的prepare就是用来初始化数据的

如果放到Preparable的prepare方法里 也可以,不过如果已经通过了validation,就不返回原页面了,就没有必要取得原页面的信息了。
那你就放到validate里,就像你说的,没通过就读一下,通过了就不读
wylsx 2008-07-22
  • 打赏
  • 举报
回复
我觉得在 validate方法里 ,能好点吧。
public void validate() {
// TODO Auto-generated method stub
super.validate();
if(this.hasFieldErrors()){
logger.info("init prev page list!~");
}
}
因为如果validation通过的话就没有必要在初始化前页的数据了。

ps:本人对struts2 不熟,以上纯属愚见。
wylsx 2008-07-22
  • 打赏
  • 举报
回复
好的,我试一试
Landor2004 2008-07-22
  • 打赏
  • 举报
回复
写错了点东西,晕
用prepare方法来获取你的list,实现Preparable接口
这里面的prepare方法会在validate之前执行,所以验证即使没有通过,list的值也可以得到
public class EditPerson extends ActionSupport implements Preparable{
private List list;
......
public void prepare() throws Exception {
this.list= this.yourService.findList(xxx);
}
}
Landor2004 2008-07-22
  • 打赏
  • 举报
回复
用prepare方法来获取你的list,实现Preparable接口
这里面的prepare方法会在validate之前执行,所以验证即使没有通过,list的值也可以得到

public class EditPerson extends ActionSupport implements Preparable{
private List list;
......
public void prepare() throws Exception {
this.person = (Person)this.yourService.findList(xxx);
}
}
wylsx 2008-07-22
  • 打赏
  • 举报
回复
可以用js,用hidden保存select内容。

不过我现在正搭框架,不想让开发人员做太多。
还有别的方式吗?

回显的问题大家应该都会碰到吧,说出来讨论一下啊。
zidasine 2008-07-22
  • 打赏
  • 举报
回复
尝试下js
顶个

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧