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);
});
};