gpt4 book ai didi

spring - 在 Spring MVC 的上下文之外使用 Spring Validator

转载 作者:行者123 更新时间:2023-12-04 05:08:26 26 4
gpt4 key购买 nike

我在 Spring MVC (@Validate) 中使用了带有支持对象和注释的验证器。它运作良好。

现在我试图通过实现我自己的 Validate 来准确理解它是如何与 Spring 手册一起工作的。我不确定如何“使用”我的验证器。

我的验证器:

import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;

import com.myartifact.geometry.Shape;

public class ShapeValidator implements Validator {

@SuppressWarnings("rawtypes")
public boolean supports(Class clazz) {
return Shape.class.equals(clazz);
}

public void validate(Object target, Errors errors) {
ValidationUtils.rejectIfEmpty(errors, "x", "x.empty");
ValidationUtils.rejectIfEmpty(errors, "y", "y.empty");
Shape shape = (Shape) target;
if (shape.getX() < 0) {
errors.rejectValue("x", "negativevalue");
} else if (shape.getY() < 0) {
errors.rejectValue("y", "negativevalue");
}
}
}

我试图验证的 Shape 类:
public class Shape {

protected int x, y;

public Shape(int x, int y) {
this.x = x;
this.y = y;
}

public Shape() {}

public int getX() {
return x;
}

public void setX(int x) {
this.x = x;
}

public int getY() {
return y;
}

public void setY(int y) {
this.y = y;
}
}

主要方法:
public class ShapeTest {

public static void main(String[] args) {
ShapeValidator sv = new ShapeValidator();
Shape shape = new Shape();

//How do I create an errors object?
sv.validate(shape, errors);
}
}

由于 Errors 只是一个接口(interface),我不能像普通类那样真正实例化它。我如何实际“使用”我的验证器来确认我的形状是有效还是无效?

附带说明一下,这个形状应该是无效的,因为它缺少 x 和 y。

最佳答案

为什么不使用 spring 提供的实现 org.springframework.validation.MapBindingResult ?

你可以做:

Map<String, String> map = new HashMap<String, String>();
MapBindingResult errors = new MapBindingResult(map, Shape.class.getName());

ShapeValidator sv = new ShapeValidator();
Shape shape = new Shape();
sv.validate(shape, errors);

System.out.println(errors);

这将打印出错误消息中的所有内容。

祝你好运

关于spring - 在 Spring MVC 的上下文之外使用 Spring Validator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9607491/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com