2013-05-30 1 views
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> 

ответ

0

сделал два изменения и вещи начинают работать

1- form tag 
2- form input tag 

    <form:form name="searchDeviceForm" commandName="searchForm" method="post" action="${searchDeviceResultsURL}"> 

<form:input path="accNum" />