Struts 2中验证失败后,radio回复到默认值的问题

使用FreeMarker和radio标签,结果当验证失败时,radio的选中项不是保持在选中的项目上,而是回到了默认值。

用户名:<@s.textfield name="user.username" required="true" />
<br />
性别:
<@s.radio name="user.sex" value="%{'true'}" list=r'#{"true":"男", "false":"女"}' required="true" />
<br />


上面的代码中,默认情况下,user.sex选中项是[b]男[/b],此时选中[b]女[/b],如果输入user.username不合法,验证失败后页面重新回到当前网页时,[b]user.username输入的值可以正常保存[/b],但是user.sex选中的不是[b]女[/b]了,而是回到了默认值[b]男[/b],请问有办法解决这个问题吗?

对应的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" />
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值