1
Spring 3, портлетов APISpring ошибка + портлет не отображается на JSP
Я не могу выводить сообщения об ошибках проверки на странице JSP, хотя bindingResult.hasErrors()
returnings правда в моем отображении действий, следуя мой код. любая помощь оценена.
Ниже мой JSP-код
<portlet:actionURL var="searchDeviceResultsURL">
<portlet:param name="doAction" value="searchDeviceResults" />
</portlet:actionURL>
<form:form method="post" action="${searchDeviceResultsURL}">
<div>
<form:errors path="*" />
</div>
...
<input id="sourceId" />
...
</form:form>
Ниже мой контроллер
@RenderMapping
public String home(RenderResponse response) {
return "startup";
}
@ModelAttribute("searchForm")
public SearchForm getCommandObject() {
return new SearchForm();
}
@RenderMapping(params = "doAction=showDeviceResults")
public String showResults() {
//return device result JSP name
return "device_results";
}
@ExceptionHandler({ Exception.class })
public String handleException() {
return "error";
}
/*
* On submit form this action searches for available devices
*/
@ActionMapping(params = "doAction=searchDeviceResults")
public void searchResults(@ModelAttribute(value = "searchForm") SearchForm searchForm, BindingResult bindingResult,
ActionResponse response, SessionStatus sessionStatus) {
searchFormValidator.validate(searchForm, bindingResult);
if (!bindingResult.hasErrors()) {
response.setRenderParameter("doAction", "showDeviceResults");
sessionStatus.setComplete();
}
}
Ниже мой валидатор
public class SearchFormValidator implements Validator {
public boolean supports(Class<?> klass) {
return SearchForm.class.isAssignableFrom(klass);
}
public void validate(Object target, Errors errors) {
//SearchForm searchForm = (SearchForm)target;
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "serviceId", "search.service.field.error");
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "sourceId", "search.source.field.error");
//errors.rejectValue("serviceId", "search.service.field.error");
//errors.rejectValue("sourceId", "search.source.field.error");
}
}
и после моей конфигурация пружины
<bean id="searchFormValidator" class="com.comcast.triage.form.SearchFormValidator" />
<bean
class="org.springframework.web.portlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="webBindingInitializer">
<bean
class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
<property name="validator" ref="searchFormValidator" />
</bean>
</property>
</bean>
В моем файле portlet.xml я есть следующие варианты времени выполнения
<container-runtime-option>
<name>javax.portlet.actionScopedRequestAttributes</name>
<value>true</value>
</container-runtime-option>
<container-runtime-option>
<name>javax.portlet.renderHeaders</name>
<value>true</value>
</container-runtime-option>
<container-runtime-option>
<name>javax.portlet.escapeXml</name>
<value>false</value>
</container-runtime-option>