hibernate.validator.fail_fast序列
我的问题是我一次又一次收到验证错误,但没有按顺序进行。因此,任何伙伴都可以根据用户需要告诉我如何显示错误。
回答:
因此,我希望这是您想要的,或者至少将您推向正确的方向:
在我的控制器中,我有以下方法:
@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发送我的数据并显示实际错误。在错误处理程序中,您可以根据需要更改逻辑(我假设您想直接在表单输入字段或其他地方显示每个错误):
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);
});
};
希望这可以帮助!随意问是否不清楚。
以上是 hibernate.validator.fail_fast序列 的全部内容, 来源链接: utcz.com/qa/404919.html