2013-08-06 2 views
0

с портретом Spring MVC Мне нужно в атрибуте model для получения информации из службы, которая зависит от ActionRequest (liferay 6.1.1).@ModelAttribute, который зависит от ActionRequest

Я попытался это:

@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

Ваш invoker ожидает, что ваш метод будет иметь 6 параметров: Model, String, BindingResult, ActionResponse, SessionStatus и ActionRequest. И ваше объявление метода имеет только 5 параметров: пользователь UserInfo, привязка BindingResultResult, ответ ActionResponse, SessionStatus sessionStatus, запрос ActionRequest. Можете ли вы вставить свой класс UserInfo? –

+0

Спасибо, это была причина (я искал старую ошибку ...) – Paolof76

ответ

0

Вы неверно указали свой атрибут модели. Значение не должно быть.

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

да, @ModelAttribute (значение = "пользователь") тоже возможно – Paolof76

Смежные вопросы