一撕阎、Controller跨域jsonp格式返回
/**
* JSONP支持
*/
@ControllerAdvice(basePackages = "com.kugou.fanxing.romantic.controller")
public class JsonpAdvice extends AbstractJsonpResponseBodyAdvice{
public JsonpAdvice() {
super("jsonCallBack","jsonpcallback");
}
}
二拜隧、Controller全局異常統(tǒng)一攔截
/**
* 統(tǒng)一異常攔截
*/
@ControllerAdvice(assignableTypes = {AController.class})
public class MobileExceptionHandler {
@ExceptionHandler(value = BizException.class)
@ResponseBody
public Result jsonErrorHandler(HttpServletRequest req, BizException e) {
return Response.failed(e);
}
@ExceptionHandler(value = {Exception.class})
@ResponseBody
public Result jsonErrorHandler(HttpServletRequest req, Exception e) {
return Response.failed(ErrCode.UNKNOWN_ERROR);
}
}
三阵苇、Controller全局共享數(shù)據(jù)
@ControllerAdvice
public class GlobalShareDataHandler{
/**
* 全局?jǐn)?shù)據(jù)綁定,所有controller都可以通過Model對象拿到這個(gè)map
* Map<String,Object> map = model.asMap();
* System.out.println(map);
* @return
*/
@ModelAttribute(name = "md")
public Map<String,Object> mydata() {
HashMap<String, Object> map = new HashMap<>();
map.put("age", 99);
map.put("gender", "男");
return map;
}
}
四洲拇、Controller全局輸入?yún)?shù)預(yù)處理(加一個(gè)前綴奈揍,避免參數(shù)重名)
/**
* 輸入?yún)?shù)b的每一個(gè)字段名前加上前綴b.
*/
@ControllerAdvice
public class GlobalBinderHandler{
@InitBinder("b")
public void b(WebDataBinder binder) {
binder.setFieldDefaultPrefix("b.");
}
}
@RestController
public class Hello {
@PostMapping("/book")
public void addBook(@ModelAttribute("b") Book book, @ModelAttribute("a") Author author) {
System.out.println(book);
System.out.println(author);
}
}