`
opportunity
  • 浏览: 12359 次
  • 性别: Icon_minigender_2
  • 来自: 火星
社区版块
存档分类
最新评论

spring注入web端校验类

 
阅读更多
首先这是针对于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;
  • src.zip (15.1 KB)
  • 下载次数: 0
分享到:
评论

相关推荐

    spring jar 包详解

    - **功能简介**:为 Spring 核心提供了大量扩展,包括使用 Spring ApplicationContext 特性时所需的全部类,JDNI 所需的全部类,UI 方面的类,以及校验 Validation 相关的类。 - **应用场景**:适用于需要使用 ...

    Spring Web MVC入门教程

    使用Spring Web MVC,开发者可以轻松地进行Web层的单元测试,因为它天生集成Spring框架的特性,如依赖注入(IoC)和面向切面编程(AOP)等。同时,Spring Web MVC支持灵活的URL映射策略,能够非常方便地与其他视图技术...

    22 Spring Core参数校验之validator慕课专栏(1)1

    在前后端分离的架构中,前端通常会进行初步的参数校验,但为了系统的健壮性,后端的校验同样重要,以防止恶意数据注入。 Spring提供了一种优雅的方式处理参数校验,即通过实现`Validator`接口。这个接口允许开发者...

    Java Web 基于Spring Struts Hibernate 轻量级架构开发基础

    在Java Web开发领域,Spring、Struts和Hibernate是三大核心框架,它们构成了经典的轻量级架构,也被称为SSH(Spring、Struts、Hibernate)框架。这个架构为开发人员提供了高效、灵活且可扩展的解决方案,使得企业级...

    Spring+MyBatis+MySql+hibernate校验所须jar包

    Spring作为全面的轻量级应用框架,提供了依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)等特性,使得应用程序的结构更加清晰,代码更易于管理和维护。MyBatis则是一个优秀的持久层框架,它简化了SQL操作,...

    springmvc01.zip_DEMO_JSON校验_spring mvc

    Spring MVC 是一个强大的Java Web开发框架,用于构建可维护、高性能和灵活的Web应用程序。它作为Spring框架的一部分,提供了一种模型-视图-控制器(MVC)架构,简化了处理HTTP请求和响应的过程。本DEMO是针对Spring ...

    spring2.5.6.zip

    5. **Instrumentation**:主要用于服务器端的类加载器和应用监控,如Tomcat等应用服务器的类加载器增强。 三、Spring 2.5.6的使用与实践 在实际项目中,Spring 2.5.6通常与Maven或Gradle等构建工具结合使用,通过...

    struts2输入校验

    输入校验是防止恶意数据注入、确保应用程序数据完整性的关键步骤。本文将深入探讨Struts2中的输入校验机制,以及如何对指定方法进行输入校验。 在Struts2中,输入校验通常分为两种方式:客户端校验和服务器端校验。...

    Spring包结构以及各个包之间引用关系说明.doc

    - 包括 JNDI 所需的类、模板引擎集成类以及校验相关的类。 6. **spring-dao.jar** - 包含了 Spring DAO(数据访问对象)进行数据访问的所有类。 - 为了使用声明式事务支持,还需要在应用中包含 `spring-aop.jar...

    Web框架编程-Spring框架编程

    (1)假设通过User、UserService、UserServiceImpl和UserDao、UserDaoImpl等接口和类完成用户的保存操作,请编程实现相关的接口和类,要求采用Spring框架技术中提供的控制反转和依赖注入的松耦合编程方法,使用基于Xml...

    Spring2.5-中文参考手册chm

    Spring 2.5集成了JSR-303 Bean Validation规范,提供了对JavaBeans的校验支持。通过注解,开发者可以定义字段级别的验证规则,Spring会自动执行这些验证。 **Web服务支持** Spring 2.5加强了对Web服务的支持,包括...

    Spring-Reference_zh_CN(Spring中文参考手册)

    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来...

    spring2.0和spring2.5 及以上版本的jar包区别 spring jar 包详解

    4. **spring-context.jar**:这个jar包建立在core和beans之上,提供了对国际化(I18N)、事件传播、资源加载及校验等的支持。它还支持与JNDI的集成,使得Spring的应用程序能够与现有的企业服务进行交互。 5. **...

    spring集成cxf客户端和服务器端demo(含自定义拦截器)

    在本项目中,"spring集成cxf客户端和服务器端demo(含自定义拦截器)"是一个实战案例,展示了如何在Spring框架下与Apache CXF服务进行整合,实现客户端和服务端的交互,并利用拦截器来增强功能。以下是这个项目涉及的...

    spring_FrameWork3.0

    - **Web 层的改进:** 增强了 Spring MVC 框架的功能,支持更多的视图技术,并且对 RESTful Web 服务提供了更好的支持。 - **声明式校验模型:** 通过集成 JSR-303 校验 API,提供了一种声明式的校验机制。 - **对 ...

    跟开涛学spring3

    通过学习《跟开涛学Spring3》,读者可以系统地掌握Spring3的核心概念和使用技巧,包括但不限于依赖注入、面向切面编程、Web开发、数据验证、事务管理、以及与其他技术的集成。这些知识将为Java开发者在实际项目中...

    Spring框架基础压缩包

    Spring MVC支持RESTful风格的URL映射,模型绑定,数据校验,以及视图解析等功能。 **5. Spring Boot** Spring Boot是为了简化Spring应用的初始搭建以及开发过程而设计的。它集成了许多默认配置,使得开发者可以...

    spring3.0 jar包

    Spring 3.0改进了对Java泛型的支持,允许在依赖注入时使用泛型类型,提高了代码的类型安全性。 9. **JMX支持**: 提供了更好的JMX(Java Management Extensions)支持,便于管理和监控Spring应用程序。 10. **...

    spring ioc+mvc代码

    Spring MVC是Spring框架提供的Web应用开发模型,它将请求处理逻辑、业务逻辑和视图分离,使代码结构更加清晰。 2.1 请求处理流程 一个典型的Spring MVC请求处理流程包括: - DispatcherServlet捕获请求。 - ...

Global site tag (gtag.js) - Google Analytics