Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
hibernate.validator.fail\u快速序列_Hibernate_Spring Mvc - Fatal编程技术网

hibernate.validator.fail\u快速序列

hibernate.validator.fail\u快速序列,hibernate,spring-mvc,Hibernate,Spring Mvc,我的问题是,我一个接一个地得到验证错误,但不是按顺序得到的。 因此,任何好友都可以告诉我如何根据用户需要按顺序显示错误。因此,我希望这是您想要的,或者至少可以将您推向正确的方向: 在我的控制器中,我有以下方法: @RequestMapping(value = "/test/createEntry", method = RequestMethod.POST) @ResponseBody public void doAndValidateSomething(@RequestBody @Valid V

我的问题是,我一个接一个地得到验证错误,但不是按顺序得到的。
因此,任何好友都可以告诉我如何根据用户需要按顺序显示错误。

因此,我希望这是您想要的,或者至少可以将您推向正确的方向:

在我的控制器中,我有以下方法:

@RequestMapping(value = "/test/createEntry", method = RequestMethod.POST)
@ResponseBody
public void doAndValidateSomething(@RequestBody @Valid ValidationFormModel, 
                                        HttpServletResponse response) {
    try {
        testService.doSomething(model);
    } catch (NormalException e) {
        log.error(String.format("Error doing something! Values -> name: %s, address: %s",
                model.getName(), model.getAddress(), e);
        response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
    }
}
这是我的异常处理程序(也用于控制器)。注意这里的行
e.getBindingResult.getAllErrors()
,它提供了所有错误的列表。在我的例子中,我决定通过
iterator.next()
只使用第一个错误,但这正是我想要的,请随意使用
getAllErrors()

@ExceptionHandler(MethodArgumentNotValidException.class)
public void validationException(MethodArgumentNotValidException e, HttpServletResponse response) throws IOException {
    response.getWriter().append(e.getBindingResult().getAllErrors().iterator().next().getDefaultMessage());
    log.error("Validation failed!", e);
    response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
} 
我的模型看起来有点像这样:

import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotEmpty;

import javax.validation.constraints.Pattern;

public class ValidationFormModel {

    @Length(max=50,min=2, message= "...")
    @NotEmpty(message = "....")
    private String name;

    @Length(max=250,min=1, message= "...")
    private String address;
    //constructor, getters and setters...
}
在客户端,我使用以下jquery/json通过post发送数据并显示实际错误。在错误处理程序中,您可以根据需要更改逻辑(我假设您希望直接在表单输入字段或其他地方显示每个错误):


希望这有帮助!请随意询问是否有不清楚的地方。

感谢Dominik的回复。但我的问题是按照entity类中声明的顺序验证实体字段。
var approveNewSend = function () {
    var newEntry = JSON.stringify({
        name: $('#nameInput').val(),
    });

    $.ajax({
        url: "${pageContext.request.contextPath}/test/createEntry",
        type: "POST",
        data: newEntry,
        contentType: "application/json; charset=utf-8",
        dataType: "json"
    })
            .success(function () {
                console.log('yay!');
            })
            .error(function (data) {
                $("#nerrorMessage").html("Error validating: " + data.responseText);
            });
};