1
我正在使用Spring 3.1.1.RELEASE。我無法在我的JSP上顯示錯誤消息。下面是我用在我的控制器的方法...爲什麼我的JSP頁面上不顯示Spring驗證錯誤?
@RequestMapping(value = "/save", method = RequestMethod.POST)
public ModelAndView save(final HttpServletRequest request,
final Organization organization,
final Model model,
final BindingResult result)
{
String nextPage = "organizations/add";
m_orgValidator.validate(organization, result);
if (!result.hasErrors())
{
final boolean isUpdate = !StringUtils.isEmpty(organization.getId());
// We need this clause to prevent detached entity errors.
if (StringUtils.isEmpty(organization.getId()))
{
organization.setId(null);
} // if
m_orgSvc.save(organization);
final String msgKey = isUpdate ? "org.updated.successfully" : "org.added.successfully";
final Object[] args = new Object[0];
request.setAttribute(STATUS,
MessageFormat.format(resourceBundle.getString(msgKey), args));
nextPage = "landing";
} else {
model.addAttribute(ORG_MODEL_NAME, organization);
} // if
return new ModelAndView(nextPage);
} // save
這是我的JSP ...
<c:url var="action" value="/organizations/save" />
<form:form modelAttribute="org" method="post" action="${action}">
<form:hidden path="id" />
<fieldset>
<legend>Upload Fields</legend>
<p><form:errors path="*" cssClass="error" /></p>
<p>
<form:label for="name" path="name">Name *</form:label><br/>
<form:input path="name" type="text"/>
</p>
我已經通過調試,我的驗證器設置錯誤正確(result.hasErrors(驗證)= true),但錯誤在我的頁面上顯示不正確。有任何想法嗎?如果有幫助,下面是我的驗證器類。
@Component
public class OrgValidator implements Validator
{
@Autowired
private OrganizationService m_orgSvc;
…
public boolean supports(Class<?> clazz)
{
return Organization.class.isAssignableFrom(clazz);
}
public void validate(final Object target,
final Errors errors)
{
final Organization org = (Organization) target;
if (org != null && !StringUtils.isEmpty(org.getEodbId()))
{
final String eodbId = org.getEodbId();
final Organization foundOrg = m_orgSvc.findByEodbId(eodbId);
if ((org.getId() == null && foundOrg != null) ||
(org.getId() != null && foundOrg != null && !org.getId().equals(foundOrg.getId())))
{
errors.rejectValue("eodbId", "AlreadyExists.org.eodb.id");
} // if
} else if (org == null || org != null && StringUtils.isEmpty(org.getEodbId())) {
errors.rejectValue("eodbId", "NotExists.org.eodb.id");
} // if
if (org == null || org.getOrganizationType() == null)
{
errors.rejectValue("organizationType", "Invalid.org.type");
} // if
if (org == null || org.getCountry() == null)
{
errors.rejectValue("country", "Invalid.org.country");
} // if
if (org == null || org.getState() == null)
{
errors.rejectValue("state", "Invalid.org.state");
} // if
}
}