2013-08-06 4 views
0

과 Spring MVC 포틀릿 ActionRequest (liferay 6.1.1)에 종속 된 서비스에서 정보를 검색하려면 모델 속성에 필요합니다.ActionRequest에 따라 달라지는 @ModelAttribute

나는이 시도했다 :

@ActionMapping(params="myaction=editUser") 
    public void editUser(@ModelAttribute(value = "user") UserInfo user, BindingResult bindingResult, 
             ActionResponse response, SessionStatus sessionStatus, ActionRequest request) 
      throws Exception { 

     myEditUserValidator.validate(user, bindingResult); 

    //... 
} 

@ModelAttribute("user") 
    public UserInfo getUser(@RequestParam String uid, ActionRequest request) throws Exception { 
     return ldapService.getUser(uid, getVirtualPortalLdapMapping(request, virtualPortals)); 
} 

을하지만 오류는 다음과 같습니다

ERROR [DispatcherPortlet:559] Could not complete request 
org.springframework.web.bind.annotation.support.HandlerMethodInvocationException: 
Failed to invoke handler method [public void com.mystuff.portlets.controllers.EditUserController.editUser(org.springframework.ui.Model,java.lang.String,org.springframework.validation.BindingResult,javax.portlet.ActionResponse,org.springframework.web.bind.support.SessionStatus,javax.portlet.ActionRequest) 
throws java.lang.Exception]; nested exception is java.lang.IllegalStateException: 
Errors/BindingResult argument declared without preceding model attribute. Check your handler method signature! 

어떤 생각? 어떤 도움을 주셔서 감사합니다

+1

호출자는 메소드에 Model, String, BindingResult, ActionResponse, SessionStatus 및 ActionRequest의 6 개의 매개 변수가 있어야합니다. 그리고 메소드 선언에는 UserInfo 사용자, BindingResult bindingResult, ActionResponse 응답, SessionStatus sessionStatus, ActionRequest 요청의 5 가지 매개 변수 만 있습니다. UserInfo 클래스를 붙여 넣을 수 있습니까? –

+0

감사합니다. 이유가 있습니다 (예전 오류를 찾고있었습니다 ...) – Paolof76

답변

0

모델 속성을 잘못 선언했습니다. 이 없어야합니다.

public void editUser(@ModelAttribute("user") UserInfo user, BindingResult bindingResult, 
ActionResponse response, SessionStatus sessionStatus, ActionRequest request) 
+0

예, @ModelAttribute (value = "user")도 가능합니다. – Paolof76

관련 문제