注解@ModelAttribute

 

@Target({ElementType.PARAMETER, ElementType.METHOD})     //可以看到注解ModelAttribute 可以在方法的参数和方法上面使用
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ModelAttribute {
    @AliasFor("name")
    String value() default "";

    @AliasFor("value")
    String name() default "";

    boolean binding() default true;
}
//被 @ModelAttribute 注释的方法会在Controller每个方法执行之前都执行,因此对于一个Controller中包含多个URL的时候,要谨慎使用

public class Attribute {

protected HttpServletResponse response;

protected HttpServletRequest request;

@ModelAttribute //请求过来先访问此方法 在访问getAttribute
public void setResponseAndReq(HttpServletRequest request, HttpServletResponse response, Model model,@RequestParam(value="userName",required=false) String userName) {
this.response = response;
this.request = request;
model.addAttribute("name",userName);
}

@RequestMapping(value = "/attribute",method = RequestMethod.POST)
public void getAttribute(ModelMap modelMap,String userName) {
System.out.println(modelMap.get("name"));

}
}

//可以声明一个BaseController 用来校验TOKEN 继承BaseController
public class BaseController {
/**
* request对象
*/
protected HttpServletRequest request;

/**
* response对象
*/
protected HttpServletResponse response;

@ModelAttribute //
public void setReqAndRes(HttpServletRequest request, HttpServletResponse response) {
this.request = request;
this.response = response;
}

/**
* 获取当前登录用户的ID
* @return
*/
public Long getUserId(){
String appToken = request.getHeader("token");
ChatToken chatToken=employeeService.getUserInfoByToken(appToken);
if(chatToken!=null){
return chatToken.getUserId();
}
return null;
}

/**
* 获取当前用户的token
* @return
*/
public String getToken(){
String appToken = request.getHeader("token");
        return appToken;
}

/**
* 获取当前登录用户会话对象
* @return
*/
public boolean getChatToken(){
String appToken =
request.getHeader("token");
    // dosomething
    return boolean;
  }
}
 

  

posted @ 2019-10-11 14:51  霍宇飞  阅读(386)  评论(0编辑  收藏  举报