2017-03-21 9 views
0

スプリングコンテナへの新しいリクエストごとにモデル属性としてオブジェクトを設定したいと思います。spring mvcのモデル属性を自動的に設定

私は以下のことをしました。 は、その中にリクエストオブジェクト -registered

インターセプターが実行なっているインターセプタにオブジェクトを追加してい新しいインターセプタを-Addedが、コントローラはヌルとしてすべての値を持つ従業員のオブジェクトを返しています。何か間違っているのですか?代わりにAbstractInterceptorを使用しての

public class UserDetailsInterceptor extends AbstractInterceptor { 

    private static Class<? extends Annotation> annotationName = PopulateUserDetails.class; 

    public UserDetailsInterceptor() { 
     super(annotationName); 
    } 

    @Override 
    protected boolean handle(HttpServletRequest request, HttpServletResponse response, HandlerMethod handlerMethod) 
      throws Exception { 
     log.error("running my interceptor handle now"); 
     Employee empoyee = populateEmployeeDetails(); 
     request.setAttribute("employee",employee"); 
     return true; 
    } 

} 


@Slf4j 
@RestController 
@CrossOrigin 
public class TestController { 

    @RequestMapping(value = "/tst1", method = RequestMethod.GET) 
    @PopulateEmployee 
    public Employee getEmployee(@ModelAttribute("employee") Employee employee) { 
     return employee; 
    } 

} 
+1

リクエスト属性のようになりますHandlerInterceptorAdapterを使用しています。 Spring MVCはビューをレンダリングしようとすると、モデル属性をリクエスト属性に転送します。 –

+0

モデル属性を設定するにはどうすればいいですか?インターセプタからモデル属性を追加したい – user93796

+0

コントローラのメソッドで 'populateEmployeeDetails()'を呼び出さないのはなぜですか? –

答えて

0

UserDetailsInterceptor属性を要求されていない属性とモデル属性をモデル化されていないこの

public class UserDetailsInterceptor extends HandlerInterceptorAdapter 
{ 
    Employee empoyee = null; 

    @Override 
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) 
      throws Exception { 
     log.error("running my interceptor handle now"); 
     empoyee = populateEmployeeDetails(); 

     return true; 
    } 

    @Override 
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object object, 
      ModelAndView modelAndView) throws Exception { 
     request.setAttribute("employee",employee"); 

    } 
} 
関連する問題