gpt4 book ai didi

spring-mvc - 在 Spring MVC Controller 上绑定(bind)错误并放入 BindingResult

转载 作者:行者123 更新时间:2023-12-02 17:46:05 25 4
gpt4 key购买 nike

当我尝试在我的类中执行“绑定(bind)”时,它会抛出异常,但我如何才能在表单上显示错误?

Controller :

@InitBinder
public final void binder(WebDataBinder binder) {
binder.registerCustomEditor(Telefone.class, new PropertyEditorSupport(){

@Override
public void setAsText(String value){
if(null != value){
try{
setValue(Telefone.fromString(value));
} catch (IllegalArgumentException e) {
// what to do here ??
}
}
}

});

Phone :

public static Telefone fromString(String s) {
checkNotNull(s);
String digits = s.replaceAll("\\D", "");
checkArgument(digits.matches("1\\d{2}|1\\d{4}|0300\\d{8}|0800\\d{7,8}|\\d{8,13}"));
return new Telefone(digits);
}

chekArgument is from Google Preconditions

当 phone 无效时,抛出 IllegalArgumentException .. 但如何将其放入 BindingResult

最佳答案

我假设您使用的是 Java 5,因此您不能使用 @Valid(无 JSR303)。如果是这种情况,那么唯一的选择就是使用 BindingResult。

以下是您可以执行的操作:

@Controller
public class MyController {

@RequestMapping(method = RequestMethod.POST, value = "myPage.html")
public void myHandler(MyForm myForm, BindingResult result, Model model) {
result.reject("field1", "error message 1");
}
}

我的jsp:

<form:form commandName="myForm" method="post">
<label>Field 1 : </label>
<form:input path="field1" />
<form:errors path="field1" />

<input type="submit" value="Post" />
</form:form>

要将错误与特定表单相关联,您可以使用:

result.rejectValue("field1", "messageCode", "Default error message");

此外,BindingResult.reject() 将错误消息与整个表单相关联。所以选择适合你的。希望对您有所帮助!

关于spring-mvc - 在 Spring MVC Controller 上绑定(bind)错误并放入 BindingResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14363039/

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