【发布时间】:2013-12-11 09:44:30
【问题描述】:
我有一个通过实现 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>
【问题讨论】:
标签: java spring jsp validation service