### SpringMVC Controller #### 对象参数绑定 @FormModel 用于将前端 FORM 数据绑定到一个或多个对象 比如: ```html
``` 对应的 Controller 中 ```java @RequestMapping(value = "/url", method=RequestMethod.POST) @ResponseBody public Object add(@FormModel("student") Student student, @FormModel("teacher") Teacher teacher) { } ``` #### 返回视图 * 页面视图 视图可以是 JSP / Freemarker / Velocity, 所以需要指明视图的后缀来确定实际使用的模板类型 ```java @RequestMapping(method=RequestMethod.GET) public Object page() { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("sys/user/list.ftl"); //modelAndView.setViewName("sys/user/list.jsp"); //modelAndView.setViewName("sys/user/list.vm"); return modelAndView; } ``` * JSON 视图 开发框架对后端返回的 JSON 格式做了约定 ```json { "result": 0, // 1 表示成功, 0: 表示失败 "message": "" // 失败时的提示消息, 成功时可以忽略 // 其它 key : value } ``` 后台给这个约定的结构提供了一个组装工具 com.qhiot.core.mvc.response.AjaxResponse ```java @RequestMapping(value = "/jsondata", method=RequestMethod.GET) @ResponseBody public Object jsonData(HttpServletRequest request) { try { User user = ... ; return AjaxResponse.success() //成功 .put("user", user); // 压入其它数据 } catch (ServiceException e) { LOGGER.error(e.getMessage(), e); return AjaxResponse.fail(e); // 失败, 失败消息自动从 Throwable 中提取 } } ``` * Excel 视图(导出 Excel) Excel 导出使用的 [Jxls v2](http://jxls.sourceforge.net/), 下面是一个导出的示例: ```java @RequestMapping(value = "/excel") public Object exportExcel(HttpServletRequest request) { ModelAndView model = new ModelAndView(); model.setViewName("sys/user/user.xlsx"); // Jxls excel 模板文件 try { User user = ... ; model.addObject("user", user); // 压入模板中需要用到的对象或属性 model.addObject(ExcelExportView.EXPORT_FILENAME, "用户"); //指定导出的文件名 } catch (Exception e) { LOGGER.error(e.getMessage(), e); } return model; } ``` * [Excel 导入](./doc/dev/excel.md) #### 数据校验 参阅 [校验工具](./doc/dev/Validate.md)