首先这是针对于SPRING3.0的例子(注解);再次也是批量校验的方式:
1.配置好附件内容
2.validate类:
package com.guohualife.rcms.riskGrade.web.controller.validate;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Component;
import com.guohualife.rcms.common.api.utils.CheckValidate;
import com.guohualife.rcms.common.web.validate.Errors;
import com.guohualife.rcms.common.web.validate.WebValidator;
import com.guohualife.rcms.common.web.validate.rule.NullableRule;
import com.guohualife.rcms.common.web.validate.rule.StringLengthRule;
import com.guohualife.rcms.riskGrade.api.util.ConstantEnum;
import com.guohualife.rcms.riskGrade.dto.GradeIndexPropertyDTO;
import com.guohualife.rcms.riskGrade.dto.QualitativeRuleDTO;
@Component("gradeRuleValidate")
public class GradeRuleValidate extends WebValidator {
@SuppressWarnings("unchecked")
@Override
protected void baseValidate() {
NullableRule nullableRule = null;// 基础校验:非空
StringLengthRule stringLengthRule = null;// 基础校验:长度
}
@Override
protected void validate(Object obj, Errors errors) {
GradeIndexPropertyDTO gradeIndexPropertyDTO = (GradeIndexPropertyDTO) obj;
String gradeIndexType = gradeIndexPropertyDTO.getGradeIndexType();
if (StringUtils.equals(gradeIndexType, ConstantEnum.GRADE_INDEX_TYPE_DL)) {
List salechnlList = gradeIndexPropertyDTO.getSalechnlList();
for (int i = 0; i < salechnlList.size(); i++) {
}
} else if (StringUtils.equals(gradeIndexType, ConstantEnum.GRADE_INDEX_TYPE_DX)) {
String gradeScore= gradeIndexPropertyDTO.getGradeScore();
double gradeScoreDou = 0 ;
if(StringUtils.isNotEmpty(gradeScore)){
gradeScoreDou =Double.parseDouble(gradeScore);
}
List qualitativeRuleList = gradeIndexPropertyDTO.getQualitativeRuleList();
double allQuestItemScore = 0 ;
double eqQualitativeScore = 0;
String eqQuestionBankId ="";
/*====begin 计算题目总分之和的参数====*/
double allQualitativeScore = 0;
/*====end 计算题目总分之和的参数====*/
for (int i = 0; i < qualitativeRuleList.size(); i++) {
boolean checkOneFlag = false;
boolean checkTwoFlag = false;
QualitativeRuleDTO qualitativeRuleDTO = (QualitativeRuleDTO) qualitativeRuleList.get(i);
String rowSpan = qualitativeRuleDTO.getOptionNum();
String qualitativeScore = qualitativeRuleDTO.getQualitativeScore();
boolean checkIsNotNullFlag = this.checkIsNotNullMethod(errors, qualitativeRuleDTO, i);
String questionBankId = qualitativeRuleDTO.getQuestionBankId();
if(!checkIsNotNullFlag){
//校验业务逻辑
String qualitativeScoreObj ="";
double qualitativeScoreDou =0;
double questItemScoreDou = 0 ;
if (StringUtils.isNotEmpty(rowSpan)) {
qualitativeScoreObj = "qualitativeRuleList[" + i + "].qualitativeScore";
qualitativeScoreDou =Double.parseDouble(qualitativeScore);
if( qualitativeScoreDou > gradeScoreDou){
errors.rejectValue(qualitativeScoreObj, "不能大于总分值");
checkOneFlag = true;
}
eqQuestionBankId = questionBankId;
if (StringUtils.isNotEmpty(qualitativeScore)) {
eqQualitativeScore = Double.parseDouble(qualitativeScore);
}
}
String questItemScore = qualitativeRuleDTO.getQuestItemScore();
String questItemScoreObj ="qualitativeRuleList[" + i + "].questItemScore";
questItemScoreDou =Double.parseDouble(questItemScore);
if( questItemScoreDou > eqQualitativeScore){
errors.rejectValue(questItemScoreObj, "单条选项不能大于当前题目分值");
checkOneFlag = true;
}
if(!checkOneFlag){
/*====begin 计算题目总分之和====*/
allQualitativeScore = allQualitativeScore + qualitativeScoreDou;
/*====end 计算题目总分之和====*/
checkTwoFlag = true ;
}
/*====begin 计算题目选项总分之和====
if(StringUtils.equals(eqQuestionBankId , questionBankId)){
allQuestItemScore = allQuestItemScore + questItemScoreDou;
}else{
System.out.println(" 题目选项总分="+allQuestItemScore);
if( allQuestItemScore > eqQualitativeScore){
errors.rejectValue("qualitativeRuleList[" + (i-1) + "].qualitativeScore", "题目分值不能小于选项分值总和");
}
allQuestItemScore =0;
}
====end 计算题目选项总分之和====*/
}
}
//for 循环结束后
if(allQualitativeScore > gradeScoreDou){
errors.rejectValue("gradeScore", "不能小于题目分值之和");
}
System.out.println("题目总分="+allQualitativeScore);
}
}
/**
* 校验非空方法
* @param errors
* @param qualitativeRuleDTO
* @param i
* @return
*/
private boolean checkIsNotNullMethod(Errors errors,QualitativeRuleDTO qualitativeRuleDTO,int i){
boolean checkResult = false;
String rowSpan = qualitativeRuleDTO.getOptionNum();
String qualitativeScore = qualitativeRuleDTO.getQualitativeScore();
if (StringUtils.isNotEmpty(rowSpan)) {
String qualitativeScoreObj = "qualitativeRuleList[" + i + "].qualitativeScore";
if (StringUtils.isEmpty(qualitativeScore)) {
errors.rejectValue(qualitativeScoreObj, "题目分值不能为空");
checkResult = true;
} else {
if (!CheckValidate.isOnlyFloatNum(qualitativeScore)) {
errors.rejectValue(qualitativeScoreObj, "只能输入整数或两位小数点");
checkResult = true;
}
}
String assignType = qualitativeRuleDTO.getAssignType();
String assignTypeObj = "qualitativeRuleList[" + i + "].assignType";
if (StringUtils.isEmpty(assignType)) {
errors.rejectValue(assignTypeObj, "得分类型不能为空");
}
String scoreType = qualitativeRuleDTO.getScoreType();
String scoreTypeObj ="qualitativeRuleList[" + i + "].scoreType";
if (StringUtils.isEmpty(scoreType)) {
errors.rejectValue(scoreTypeObj, "计分方式不能为空");
}
}
String questItemScore = qualitativeRuleDTO.getQuestItemScore();
String questItemScoreObj ="qualitativeRuleList[" + i + "].questItemScore";
if (StringUtils.isEmpty(questItemScore)) {
errors.rejectValue(questItemScoreObj, "选项分值不能为空");
checkResult = true;
} else {
if (!CheckValidate.isOnlyFloatNum(questItemScore)) {
errors.rejectValue(questItemScoreObj, "只能输入整数或两位小数点");
checkResult = true;
}
}
return checkResult;
}
}
3.controller中注入validate校验类:
@Resource(name = "gradeRuleValidate")
private Validator validator;
分享到:
相关推荐
- **功能简介**:为 Spring 核心提供了大量扩展,包括使用 Spring ApplicationContext 特性时所需的全部类,JDNI 所需的全部类,UI 方面的类,以及校验 Validation 相关的类。 - **应用场景**:适用于需要使用 ...
使用Spring Web MVC,开发者可以轻松地进行Web层的单元测试,因为它天生集成Spring框架的特性,如依赖注入(IoC)和面向切面编程(AOP)等。同时,Spring Web MVC支持灵活的URL映射策略,能够非常方便地与其他视图技术...
在前后端分离的架构中,前端通常会进行初步的参数校验,但为了系统的健壮性,后端的校验同样重要,以防止恶意数据注入。 Spring提供了一种优雅的方式处理参数校验,即通过实现`Validator`接口。这个接口允许开发者...
在Java Web开发领域,Spring、Struts和Hibernate是三大核心框架,它们构成了经典的轻量级架构,也被称为SSH(Spring、Struts、Hibernate)框架。这个架构为开发人员提供了高效、灵活且可扩展的解决方案,使得企业级...
Spring作为全面的轻量级应用框架,提供了依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)等特性,使得应用程序的结构更加清晰,代码更易于管理和维护。MyBatis则是一个优秀的持久层框架,它简化了SQL操作,...
Spring MVC 是一个强大的Java Web开发框架,用于构建可维护、高性能和灵活的Web应用程序。它作为Spring框架的一部分,提供了一种模型-视图-控制器(MVC)架构,简化了处理HTTP请求和响应的过程。本DEMO是针对Spring ...
5. **Instrumentation**:主要用于服务器端的类加载器和应用监控,如Tomcat等应用服务器的类加载器增强。 三、Spring 2.5.6的使用与实践 在实际项目中,Spring 2.5.6通常与Maven或Gradle等构建工具结合使用,通过...
输入校验是防止恶意数据注入、确保应用程序数据完整性的关键步骤。本文将深入探讨Struts2中的输入校验机制,以及如何对指定方法进行输入校验。 在Struts2中,输入校验通常分为两种方式:客户端校验和服务器端校验。...
- 包括 JNDI 所需的类、模板引擎集成类以及校验相关的类。 6. **spring-dao.jar** - 包含了 Spring DAO(数据访问对象)进行数据访问的所有类。 - 为了使用声明式事务支持,还需要在应用中包含 `spring-aop.jar...
(1)假设通过User、UserService、UserServiceImpl和UserDao、UserDaoImpl等接口和类完成用户的保存操作,请编程实现相关的接口和类,要求采用Spring框架技术中提供的控制反转和依赖注入的松耦合编程方法,使用基于Xml...
Spring 2.5集成了JSR-303 Bean Validation规范,提供了对JavaBeans的校验支持。通过注解,开发者可以定义字段级别的验证规则,Spring会自动执行这些验证。 **Web服务支持** Spring 2.5加强了对Web服务的支持,包括...
6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.1.1. @Configurable object的单元测试 6.8.1.2. 多application context情况下的处理 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来...
4. **spring-context.jar**:这个jar包建立在core和beans之上,提供了对国际化(I18N)、事件传播、资源加载及校验等的支持。它还支持与JNDI的集成,使得Spring的应用程序能够与现有的企业服务进行交互。 5. **...
在本项目中,"spring集成cxf客户端和服务器端demo(含自定义拦截器)"是一个实战案例,展示了如何在Spring框架下与Apache CXF服务进行整合,实现客户端和服务端的交互,并利用拦截器来增强功能。以下是这个项目涉及的...
- **Web 层的改进:** 增强了 Spring MVC 框架的功能,支持更多的视图技术,并且对 RESTful Web 服务提供了更好的支持。 - **声明式校验模型:** 通过集成 JSR-303 校验 API,提供了一种声明式的校验机制。 - **对 ...
通过学习《跟开涛学Spring3》,读者可以系统地掌握Spring3的核心概念和使用技巧,包括但不限于依赖注入、面向切面编程、Web开发、数据验证、事务管理、以及与其他技术的集成。这些知识将为Java开发者在实际项目中...
Spring MVC支持RESTful风格的URL映射,模型绑定,数据校验,以及视图解析等功能。 **5. Spring Boot** Spring Boot是为了简化Spring应用的初始搭建以及开发过程而设计的。它集成了许多默认配置,使得开发者可以...
Spring 3.0改进了对Java泛型的支持,允许在依赖注入时使用泛型类型,提高了代码的类型安全性。 9. **JMX支持**: 提供了更好的JMX(Java Management Extensions)支持,便于管理和监控Spring应用程序。 10. **...
Spring MVC是Spring框架提供的Web应用开发模型,它将请求处理逻辑、业务逻辑和视图分离,使代码结构更加清晰。 2.1 请求处理流程 一个典型的Spring MVC请求处理流程包括: - DispatcherServlet捕获请求。 - ...