SpringBoot整合WEB开发--(四)@ControllerAdvic…
2020-02-16 16:03:50来源:博客园 阅读 ()
SpringBoot整合WEB开发--(四)@ControllerAdvice
1.全局异常处理:
@ControllerAdvice处理全局数据,一般搭配@ExceptionHandler,@ModelAttribute以及@InitBinder使用。
@ControllerAdvice public class CustomExceptionHandler { @ExceptionHandler(MaxUploadSizeExceededException.class) public ModelAndView uploadException(MaxUploadSizeExceededException e) throws IOException { ModelAndView mv = new ModelAndView(); mv.addObject("msg", "上传文件大小超出限制!"); mv.setViewName("error"); return mv; } @ExceptionHandler(Exception.class) public void myexce(Exception e) { System.out.println("myexce>>>"+e.getMessage()); } }
2.添加全局数据:
@ModelAttribute配置全局数据,如下:key="info",value="map",
@ControllerAdvice public class GlobalConfig { @ModelAttribute(value = "info") public Map<String,String> userInfo() { HashMap<String, String> map = new HashMap<>(); map.put("username", "罗贯中"); map.put("gender", "男"); return map; } }
controller:
@GetMapping("/hello") @ResponseBody public void hello(Model model) { Map<String, Object> map = model.asMap(); //获取到全局数据key="info",value="map" Set<String> keySet = map.keySet(); Iterator<String> iterator = keySet.iterator(); while (iterator.hasNext()) { String key = iterator.next(); Object value = map.get(key); System.out.println(key + ">>>>>" + value); } }
http://localhost:8080/hello
3.请求参数预处理:
@ControllerAdvice结合@InitBinder可以实现请求参数预处理,即将表单中的数据绑定到实体类上时进行一些额外的处理。
问题:两个实体类,属性名字一致,传递参数时参数无法指定具体的一个,如下,两个实体类都有name属性,url拼接时出现问题。
demo:
实体类:
public class Author { private String name; private int age; 。。。。。。。。 } public class Book { private String name; private String author; 。。。。。。。。。。 }
@ControllerAdvice public class GlobalConfig {
@InitBinder("b")
public void init(WebDataBinder binder) {
binder.setFieldDefaultPrefix("b."); //处理@ModelAttribute("b")的参数
}
@InitBinder("a")
public void init2(WebDataBinder binder) {
binder.setFieldDefaultPrefix("a."); //处理@ModelAttribute("a")的参数
}
}
controller:
@GetMapping("/book") @ResponseBody public String book(@ModelAttribute("b") Book book, @ModelAttribute("a") Author author) { return book.toString() + ">>>" + author.toString(); }
原文链接:https://www.cnblogs.com/crazy-lc/p/12317249.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- springboot2配置JavaMelody与springMVC配置JavaMelody 2020-06-11
- SpringBoot 2.3 整合最新版 ShardingJdbc + Druid + MyBatis 2020-06-11
- 掌握SpringBoot-2.3的容器探针:实战篇 2020-06-11
- Spring WebFlux 学习笔记 - (一) 前传:学习Java 8 Stream Ap 2020-06-11
- nacos~配置中心功能~springboot的支持 2020-06-10
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash