gpt4 book ai didi

java - 验证 Spring 服务层

转载 作者:行者123 更新时间:2023-11-29 08:55:21 24 4
gpt4 key购买 nike

我有一个通过实现 Spring Validator 接口(interface)来验证的表单。验证只涉及我表单中的字段。我对此没有问题,但我想做但我不知道如何进行的是在我的 Controller 中调用一个服务方法,如果此方法返回特定值,则返回到表单页面并显示jsp页面中的错误信息。

validator :

public class TrunkValidator implements Validator{

@Override
public boolean supports(Class<?> clazz) {
return Trunk.class.equals(clazz);
}

public void validate(Object obj, Errors errors) {
Trunk trunk = (Trunk) obj;

ValidationUtils.rejectIfEmptyOrWhitespace(errors, "compagnyName", "field.required", "Nom emtreprise est obligatoire");

ValidationUtils.rejectIfEmptyOrWhitespace(errors, "pbxName", "field.required", "Nom Pbx est obligatoire");


if ( ! errors.hasFieldErrors("compagnyName")) {
if ("trunk".equals(trunk.getCompagnyName()))
errors.rejectValue("compagnyName", "sssss", "déja existant");
}
}
}

Controller :

@RequestMapping(value = "/createTrunk", method = RequestMethod.POST)
protected ModelAndView createTrunk(@Valid Trunk trunk,
BindingResult bindingResult) {
// form validation
if (bindingResult.hasErrors()) {
ModelAndView model = new ModelAndView("/jsp/createTrunk.jsp");
model.addObject(ATTRIBUTE_BASE_URL, baseUrl);
return model;
} else {

// if service method retun error message or exception
// display form with error message

}
}

JSP:

<form:form method="POST" commandName="trunk" action="${baseUrl}/createTrunk">
<form:errors path="*" cssClass="errorblock" element="div" />
<table>
<tr>
<td>Nom de l'entreprise :</td>
<td><form:input path="compagnyName" /></td>
<td><form:errors path="compagnyName" cssClass="error" /></td>
</tr>
<tr>
<td>Nom de PBX :</td>
<td><form:input path="pbxName" /></td>
<td><form:errors path="pbxName" cssClass="error" /></td>
</tr>

<tr>
<td>N° de commande :</td>
<td><form:input path="orderNum" /></td>
<td><form:errors path="orderNum" cssClass="error" /></td>
</tr>



<tr>
<td>LDI :</td>
<td><form:input path="ldi" /></td>
<td><form:errors path="ldi" cssClass="error" /></td>
</tr>

<tr>
<td>INSEE :</td>
<td><form:input path="insee" /></td>
<td><form:errors path="insee" cssClass="error" /></td>
</tr>

最佳答案

在你的 Controller 中添加一个@InitBinder:

@InitBinder("trunk")
public void initBinderAll(WebDataBinder binder) {
binder.setValidator(new TrunkValidator());
}

关于java - 验证 Spring 服务层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20515664/

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