浏览 5718 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-09-11
最后修改:2008-11-19
用户名:<@s.textfield name="user.username" required="true" /> <br /> 性别: <@s.radio name="user.sex" value="%{'true'}" list=r'#{"true":"男", "false":"女"}' required="true" /> <br /> 上面的代码中,默认情况下,user.sex选中项是男,此时选中女,如果输入user.username不合法,验证失败后页面重新回到当前网页时,user.username输入的值可以正常保存,但是user.sex选中的不是女了,而是回到了默认值男,请问有办法解决这个问题吗? 对应的user Bean代码: public class User implements Serializable { private String username; private String password; private boolean sex; ----------------------------------- 哎,大家都回家过中秋节了,自己的问题,自己回答吧。 希望对有此疑问的朋友有所帮助。我的方法,能实现,但总觉得有些丑陋,希望能学到大家实际开发中是如何声明的radio。 两种方法: 1、基于FreeMarker 对user对象进行判断,设定sexValue变量。 <#if user?exists> <#assign sexValue = user.sex?default('true')?string /> <#else> <#assign sexValue = 'true' /> </#if> 然后,在使用radio时,象下面这样声明。 <@s.radio name="user.sex" value="${sexValue}" list=r'#{"true":"男", "false":"女"}' required="true" /> 2、基于OGNL,这个好。 <@s.radio name="user.sex" value="%{user == null || user.sex == null ? 'true' : user.sex}" list=r'#{"true":"男", "false":"女"}' required="true" /> 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-09-13
哎,大家都回家过中秋节了,自己的问题,自己回答吧。
希望对有此疑问的朋友有所帮助。我的方法,能实现,但总觉得有些丑陋,希望能学到大家实际开发中是如何声明的radio。 两种方法: 1、基于FreeMarker 对user对象进行判断,设定sexValue变量。 <#if user?exists> <#assign sexValue = user.sex?default('true')?string /> <#else> <#assign sexValue = 'true' /> </#if> 然后,在使用radio时,象下面这样声明。 <@s.radio name="user.sex" value="${sexValue}" list=r'#{"true":"男", "false":"女"}' required="true" /> 2、基于OGNL,这个好。 <@s.radio name="user.sex" value="%{user == null || user.sex == null ? 'true' : user.sex}" list=r'#{"true":"男", "false":"女"}' required="true" /> |
|
返回顶楼 | |
发表时间:2008-09-15
我觉得你应该在struts.xml中,调整一下param和validate这两个interceptor的顺序,如果先执行param这个interceptor的话,在验证失败之前, user的sex已经被赋了值的话,应该能解决你的问题
|
|
返回顶楼 | |
发表时间:2008-09-15
问题是我想在单选框中,有一个被默认选中的。
当页面第一次打开时,不应执行Validate的,此时要求单选框中,有一个被默认选中。 所以,Validate是拦不住的。 |
|
返回顶楼 | |
发表时间:2008-09-16
那更简单了,修改一下User类,给字段sex赋一个初值就行了。
private boolean sex = true; |
|
返回顶楼 | |
发表时间:2008-09-16
当页面初次打开时,User类对象还是null,将User类的sex属性设为true根本不管用的啊。
|
|
返回顶楼 | |
发表时间:2008-09-26
那么必杀技是:
<@s.radio name="user.sex" value="%{'true'}" list=r'#{"true":"男", "false":"女"}' required="true" value="true"/> |
|
返回顶楼 | |
发表时间:2008-09-27
用你的Action里面覆盖掉validate()方法,验证失败后会执行这个方法的,如果你在这个方法里面覆值,验证失败后是可以保留的!
|
|
返回顶楼 | |
发表时间:2008-09-30
或者可以实现preparable接口 ,也可以在验证失败后做些事情
|
|
返回顶楼 | |
发表时间:2008-12-11
第2种基于OGNL的方式的经常用到的,比较好
|
|
返回顶楼 | |