0 0

spring mvc annotation 的 validation表单验证问题:怎么设定单个字段的验证顺序?5

如题。
被验证的form对象的代码如下:
public class ValidationForm {

	@NotEmpty(message = "{user.name.error}")
	@Size(min = 1, max = 20,message = "{user.name.error2}")
	private String userName;
	
 	@NotNull
 	@Min(1)
 	@Max(110)
	private Integer age;
	
	@NotEmpty(message = "Password must not be blank.")
	@Size(min = 1, max = 10, message = "Password must between 1 to 10 Characters.")
 	@Pattern(regexp="\\d", message = "error!")
	private String password;
}

controller代码如下:
@RequestMapping(method = RequestMethod.POST, value = "validationform")
	public String processValidatinForm(@Valid ValidationForm validationForm,
			BindingResult result, Map model) {
		if (result.hasErrors()) {
			return "validationform";
		}
		// Add the saved validationForm to the model
		model.put("validationForm", validationForm);
		return "validationform";
	}

现在验证和错误消息都能显示,只是所有错误消息一起显示了。
比如,在画面上什么也没有输入,点提交按钮,userName的两个验证的错误消息会一起显示出来。其他的两个属性的错误消息也是一起显示出来的。
请问:能否设置单个字段的验证顺序,比如userName,先验证是否输入,如果没有输入,那验证停止,不继续验证size;
同时,下面的两个属性age和password的验证也是一样,先验证第一个,成功后才验证第二个。
请帮忙了。谢谢。

问题补充:简单点说,我是想要spring的验证短路,而不是直接把多个验证的结果一起显示出来。比如,notempty的验证,在用户没有输入任何内容提交的时候,服务器端应该先验证用户是否输入,验证代码发现用户没有输入任何内容,那就直接返回错误消息:此字段必须输入。就可以了。而无需验证输入内容的size,因为没有必要了,用户根本没有输入任何内容呀。

问题补充:用group是可以实现短路,但是group只能让真个form分组验证。不能把一个form对象的每一个字段各自短路自己的。

3个答案 按时间排序 按投票排序

0 0

参考下这个吧 通过Group搞定
http://stackoverflow.com/questions/3827508/how-to-set-check-order-for-jsr303-bean-validation

2013年1月03日 13:36
0 0

引用

恩。我明白你说的。你说的有道理。但是,我想即使只用后台验证,spring的validate也应该可以实现这种需求吧?只是我还不知道怎么用吧。还是谢谢你的回答。

首先,HTTP是无状态的!
  如果你想让Web服务器知道本次需要从哪个字段开始验证,就只能通过Cookie或Session,甚至是数据库来记录上一次验证的字段!对于一个现在拥有(或未来即将拥有)几十个上百个表单的项目来说(或者你只是写一个DEMO而已),你这样做不仅增加系统复杂度,后期维护难度,更增加自身工作量!更尴尬的是,在用户看来,这和直接使用前台JavaScript实现的效果没什么两样!有点吃力不讨好!
其次,如果一个表单有10个字段,那么最坏的情况下,你至少要提交10次请求才能完成所有字段的验证!加载10次页面,不仅增加了请求数(加大服务端的处理压力),而且加大网络流量,更重要的是,你要让用户刷新10次页面才能完成提交表单的操作!

因此,个人觉得,现在最难解决的不是技术问题,而是你的观点![color=blue][/color]

2013年1月02日 10:36
0 0

为什么不在前台直接使用jQuery Validate插件直接验证,这样不仅你的要求都可以得到满足,而且用户体验性更好(一输入马上验证是否对不对,不用等到提交表单才知道结果!)。
后台验证只是为了防止前台验证被禁用或绕过去,用户交验的最后一道“防线”而已!

2013年1月02日 09:45

相关推荐

    Spring MVC Annotation验证的方法

    Spring MVC Annotation验证方法 Spring MVC 框架提供了多种验证方法,其中一种常用的方式是使用Annotation验证。本文将详细介绍 Spring MVC Annotation验证的方法,包括使用 Spring MVC 自带的 Annotation 验证和...

    SpringMVC源码总结(三)mvc:annotation-driven和mvc:message-converters简单介绍

    在Spring MVC框架中,`mvc:annotation-driven`和`mvc:message-converters`是两个非常重要的元素,它们在处理基于注解的控制器和数据转换方面起着关键作用。本篇文章将深入探讨这两个组件的工作原理以及如何在实际...

    SpringMVC源码总结(二)mvc:mvc:annotation-driven背后的那些事

    在Spring MVC框架中,`mvc:annotation-driven`是Spring MVC配置中的一个重要元素,它使得我们的应用能够支持基于注解的控制器、数据绑定、格式化转换器和服务端验证等功能。这篇博客将深入探讨`mvc:annotation-...

    拦截器与冲突解决

    1. **配置顺序**:Spring MVC按照注册拦截器的顺序执行它们,如果`<mvc:annotation-driven />`配置在拦截器之后,那么可能会导致拦截器无法正常工作,因为Spring可能已经处理了请求,而没有交给拦截器。 2. **命名...

    Spring MVC 教程快速入门 深入分析

    十二、Spring MVC如何把全局异常记录到日志中:讲述了如何将异常信息记录到日志文件中,以便于问题的追踪和调试。 十三、如何给Spring3 MVC中的Action做JUnit单元测试:说明了如何对Spring MVC中的控制器进行单元...

    Spring MVC入门教程

    个人认为相当适合入门和知识巩固!! 一、前言 二、spring mvc 核心类与接口 ...十九、 <mvc:annotation-driven /> 到底做了什么工作 二十、 本文中springMVC.xml配置文件是核心,这里给一个下载地址

    Spring MVC 教程 快速入门 深入分析

    Spring MVC 教程 快速入门 深入分析 目录 一、前言 二、spring mvc 核心类与接口 三、spring mvc 核心流程图 四、spring mvc DispatcherServlet说明 五、spring mvc 双亲上下文的说明 六、springMVC-mvc.xml 配置...

    Spring MVC internationalization annotation example

    Spring MVC internationalization annotation example 这个是annotation 方式的国际化 访问http://localhost:8080/login.htm

    Spring MVC学习指南

    ### Spring MVC 学习指南详解 #### 一、Spring MVC 概述 Spring MVC 是 Spring 框架的一部分,主要用于构建基于 Model-View-Controller (MVC) 设计模式的 Web 应用程序。它提供了丰富的功能来简化 Web 开发过程,...

    Spring MVC快速入门

    【Spring MVC 快速入门】 Spring MVC 是一个强大的基于Java的Web应用开发框架,它提供了模型-视图-控制器(MVC)架构模式,使得开发者能够有效地分离业务逻辑和表现层。Spring MVC 以其简洁、高效和高度可扩展性...

    spring_MVC源码

    弃用了struts,用spring mvc框架做了几个项目,感觉都不错,而且使用了注解方式,可以省掉一大堆配置文件。本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mvc和rest小例子没有介绍到数据层的内容,...

    Annotation Based Spring MVC Basics

    Spring MVC提供了许多高级特性,如数据绑定、模型验证、类型转换、本地化支持等,使得开发更高效且可维护。通过学习和实践这些基础,开发者可以进一步探索Spring MVC的深度和广度,构建复杂的企业级Web应用。

    spring mvc的简单单元测试

    Spring MVC 是一个强大的Java web开发框架,用于构建可维护、可扩展的Web应用程序。单元测试是软件开发过程中不可或缺的一部分,它允许开发者独立地测试代码的各个部分,确保它们按照预期工作。Spring MVC 提供了对...

    spring mvc

    ### Spring MVC 教程知识点详解 #### 一、Spring MVC 概述 Spring MVC 是 Spring 框架的一部分,主要用于构建基于 Java 的 Web 应用程序。它是一种模型-视图-控制器(Model-View-Controller,MVC)设计模式的实现...

    Spring MVC IDEA版本DEMO

    **Spring MVC IDEA版本DEMO详解** 在现代Java Web开发中,Spring MVC框架是不可或缺的一部分,它为构建可扩展、模块化的Web应用程序提供了强大的支持。IntelliJ IDEA作为一款高效的Java集成开发环境,使得开发...

    如果面试问你Spring MVC的原理

    9. **Validation**:Spring MVC提供了数据验证功能,可以通过`@Valid`注解对模型对象进行验证,错误信息可以通过`BindingResult`对象获取。 10. **Async Support**:Spring MVC支持异步处理,可以通过`@Async`注解...

    Spring-MVC-3.0.rar_Java spring mvc_spring mvc_spring ppt

    **Spring MVC 3.0详解** Spring MVC是Spring框架的一部分,专为构建Web应用程序而设计。这个名为"Spring MVC 3.0.rar"的压缩包包含了一份关于Spring MVC 3.0版本的实战指南PPT,是Java开发者深入理解Spring MVC架构...

    Spring MVC整合Mybatis

    - **Spring MVC配置**:配置`<mvc:annotation-driven>`启用注解驱动,配置视图解析器如`InternalResourceViewResolver`。 **5. 实例化Mapper** 在Service层,可以通过@Autowired注解自动注入Mapper接口,例如: ```...

    IDEA 搭建Spring MVC环境示例二

    在本示例中,我们将详细探讨如何使用IntelliJ IDEA(IDEA)和Maven来搭建Spring MVC项目环境。Spring MVC是Spring框架的一个模块,它为构建Web应用程序提供了模型-视图-控制器(MVC)架构。Maven则是一个强大的项目...

Global site tag (gtag.js) - Google Analytics