我有一个表单,可以通过实现Spring Validator接口进行验证。 验证只涉及我的表单中的字段。我没有这个问题,但是我想要做什么,我不知道如何继续就是在我的控制器中调用一个服务方法,如果这个方法返回一个特定的值,返回到表单页面并显示错误消息在jsp页面中。验证弹簧服务层
验证:
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");
}
}
}
控制器:
@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>