`
netfork
  • 浏览: 488086 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

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选中项是,此时选中,如果输入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" />
分享到:
评论
10 楼 bo_hai 2014-02-24  
netfork 写道
哎,大家都回家过中秋节了,自己的问题,自己回答吧。
希望对有此疑问的朋友有所帮助。我的方法,能实现,但总觉得有些丑陋,希望能学到大家实际开发中是如何声明的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" />


非常好,学习了。解决了我的问题。
9 楼 lph128998 2008-12-11  
第2种基于OGNL的方式的经常用到的,比较好
8 楼 leisure 2008-09-30  
或者可以实现preparable接口 ,也可以在验证失败后做些事情
7 楼 ztroma 2008-09-27  
用你的Action里面覆盖掉validate()方法,验证失败后会执行这个方法的,如果你在这个方法里面覆值,验证失败后是可以保留的!
6 楼 usherlight 2008-09-26  
那么必杀技是:
<@s.radio name="user.sex" value="%{'true'}" list=r'#{"true":"男", "false":"女"}' required="true" value="true"/>
5 楼 netfork 2008-09-16  
当页面初次打开时,User类对象还是null,将User类的sex属性设为true根本不管用的啊。
4 楼 usherlight 2008-09-16  
那更简单了,修改一下User类,给字段sex赋一个初值就行了。

private boolean sex = true;
3 楼 netfork 2008-09-15  
问题是我想在单选框中,有一个被默认选中的。
当页面第一次打开时,不应执行Validate的,此时要求单选框中,有一个被默认选中。
所以,Validate是拦不住的。
2 楼 usherlight 2008-09-15  
我觉得你应该在struts.xml中,调整一下param和validate这两个interceptor的顺序,如果先执行param这个interceptor的话,在验证失败之前, user的sex已经被赋了值的话,应该能解决你的问题
1 楼 netfork 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" />

相关推荐

    struts2自学文档

    - **接收请求参数**:Struts2能够自动将请求参数绑定到Action中的属性。 - **自定义类型转换器**:对于特定类型的请求参数,可以通过自定义类型转换器进行转换。 #### 八、其他功能 - **文件上传**:Struts2支持...

    Struts2图书馆管理系统

    2. `&lt;s:textfield&gt;`:用于创建输入字段,与Action类的属性关联,可以设置验证规则和默认值。 3. `&lt;s:textarea&gt;`:创建多行文本输入框,与Action类的属性关联,适用于长文本输入。 4. `&lt;s:submit&gt;`:定义提交按钮,...

    struts2标签解析

    Struts2标签库是Java Web开发中的一个强大工具,它为开发者提供了丰富的UI组件和控制逻辑,极大地简化了视图层的代码编写。Struts2框架的标签库基于OGNL(Object-Graph Navigation Language)表达式语言,使得在JSP...

    struts2标签写法

    在Struts2中,标签库是其核心特性之一,它提供了一系列预定义的JSP标签,用于简化视图层的开发,使代码更加简洁、易读。本文将深入探讨Struts2标签的写法及其应用。 首先,Struts2的标签库分为核心标签库和OGNL标签...

    Struts标签- HTML标签

    在Struts 2中,HTML标签被替换为更强大的Struts Tags,提供了更多的功能和灵活性。例如,Struts 2的`s:textfield`、`s:password`等标签,不仅继承了Struts 1的功能,还增加了更多特性,如OGNL表达式支持、动态属性...

    struts2标签介绍4

    在Struts2中,标签库是其核心特性之一,它提供了一系列预定义的JSP标签,使得开发者可以更加便捷地处理视图层的展示逻辑。本文将深入探讨Struts2标签的使用,以帮助你更好地理解和应用这些标签。 1. **简介** ...

    struts2标签史上最详细的struts2标签介绍

    Struts2是一个强大的Java web应用程序框架,它极大地简化了MVC(模型-视图-控制器)架构的实现。Struts2的核心就是它的标签库,它提供了丰富的标签来帮助开发者更高效地构建用户界面。以下是对Struts2标签的史上最...

    struts2 标签使用帮助

    在Struts2中,标签库极大地提高了开发效率,使得开发者能够更专注于业务逻辑,而不是繁琐的HTML代码。 本文将深入探讨Struts2的标签使用,主要分为以下几个部分: 1. **标签库介绍** Struts2的标签库包括核心标签...

    struts2的几种选择标签

    在Struts2中,选择标签是用于处理用户输入数据,特别是表单选择元素,如单选按钮和复选框。这些标签极大地简化了在JSP页面中创建动态表单的工作,并且提供了与Action类进行交互的方便方式。本文将深入探讨Struts2中...

    jsp struts1 标签实例详解第1/2页

    当用户填写并提交这个表单后,Struts1框架会自动将表单数据绑定到`TagForm`对象中,然后通过Action处理用户的请求。Action可以对这些数据进行验证、业务处理,最后可能跳转到一个新的JSP页面显示结果。 总之,...

    Struts2标签库详解

    在Struts2框架中,标签库分为非UI标签和UI标签两大类。 1. **非UI标签**: 非UI标签通常用于处理逻辑或数据,不直接与用户界面交互。例如,`&lt;s:property&gt;`标签用于显示或传递对象的属性值,`&lt;s:if&gt;`和`&lt;s:else&gt;`...

    Struts标签文档

    7. `&lt;html:errors&gt;`:这个标签用于显示ActionForm中的验证错误信息,提高用户交互体验。 8. `&lt;html:link&gt;`:用于创建链接,它可以动态地生成URL,将请求参数与Action转发或重定向关联。 9. `&lt;html:messages&gt;`:...

    struts2标签整理

    ### Struts2 标签详解 #### 一、概述 Struts2框架是Apache软件基金会提供的一个开源Web应用框架,它继承了Struts1的优点,并在此基础上做了许多改进。Struts2提供了丰富的标签库(Tag Library),使得开发人员能够...

    Java学习笔记-个人整理的

    \contentsline {chapter}{Contents}{2}{section*.1} {1}Java基础}{17}{chapter.1} {1.1}基本语法}{17}{section.1.1} {1.2}数字表达方式}{17}{section.1.2} {1.3}补码}{19}{section.1.3} {1.3.1}总结}{23}{...

Global site tag (gtag.js) - Google Analytics