2013-05-30 1 views
1

봄 3, 포틀릿 API봄 + 포틀릿 오류 다음은 내 코드입니다, 내 액션 매핑하지만 <code>bindingResult.hasErrors()</code> returnings 사실, JSP

내가 JSP 페이지에 유효성 검사 오류 메시지를 표시 할 수 없습니다 오전에 표시되지 않습니다. 도움을 청하니 . 다음

내 검증

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"); 
    } 
} 

내 컨트롤러

@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(); 
     } 

    } 

다음 내 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> 

다음입니다이며, 다음은 내 스프링 구성입니다

내가 런타임 옵션 다음 한 내 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" /> 
를 작업을 시작했다