gpt4 book ai didi

java - 获取 BindingResults 以显示与错误关联的字段

转载 作者:行者123 更新时间:2023-12-02 13:41:37 26 4
gpt4 key购买 nike

我正在尝试为我正在开发的 Spring WebApp 编写集成测试。在此过程中的某一时刻,我使用以下代码从 BindingResult 中提取错误列表:

    BindingResult checkMe = (BindingResult)mv.getModelMap().get("org.springframework.validation.BindingResult.module");
assertEquals(1, check.getErrorCount());

//Check to make sure it is the right field that errored, and had the right error.
if(check.hasErrors()){

List<ObjectError> errors = checkMe.getAllErrors();
assertEquals(1, errors.size());
ObjectError tester = errors.get(0);
assertEquals("Range", tester.getCode());
assertEquals("must be between 0 and 365", tester.getDefaultMessage());

}

我想添加一行来断言引发错误的字段实际上是“daysToComplete”。我知道信息在某处,因为 checkMe.getAllErrors().toString() 返回:

[Field error in object 'module' on field 'daysToComplete': rejected value [1000]; codes [Range.module.daysToComplete,Range.daysToComplete,Range.int,Range]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [module.daysToComplete,daysToComplete]; arguments []; default message [daysToComplete],365,0]; default message [must be between 0 and 365]]

我如何获取字段本身?我查看了文档并询问了谷歌,但似乎没有任何结果......

最佳答案

您的 ObjectError 可能是 FieldError 的一个实例,它扩展了 ObjectError。 FieldError 应该有一个 getField() 方法,它会告诉您名称。尝试以下操作(未经测试):

if (check.hasErrors()){

List<ObjectError> errors = checkMe.getAllErrors();
assertEquals(1, errors.size());

FieldError tester = null;
if (errors.get(0) instanceof FieldError) {
tester = errors.get(0);
} else {
assertFail("Wrong binding result error type.");
}

assertEquals("daysToComplete", tester.getField());
assertEquals("Range", tester.getCode());
assertEquals("must be between 0 and 365", tester.getDefaultMessage());
}

关于java - 获取 BindingResults 以显示与错误关联的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19261807/

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