YMP在線手冊
/ 視圖(View)
視圖(View)
WebMVC模塊支持多種視圖技術,包括JSP、Freemarker、Velocity、Text、HTML、JSON、Binary、Forward、Redirect、HttpStatus等,也可以通過IView接口擴展實現(xiàn)自定義視圖;
控制器視圖的表示方法
- 通過返回IView接口類型;
- 通過字符串表達一種視圖類型;
- 無返回值或返回值為空,將使用當前RequestMapping路徑對應的JspView視圖;
視圖文件路徑配置
控制器視圖文件基礎路徑,必須是以 '/' 開始和結尾,默認值為/WEB-INF/templates/;
ymp.configs.webmvc.base_view_path=/WEB-INF/templates/
視圖對象操作示例
視圖文件可以省略擴展名稱,通過IView接口可以直接設置請求參數(shù)和內(nèi)容類型;
// 通過View對象創(chuàng)建視圖對象 IView _view = View.jspView("/demo/test") .addAttribute("attr1", "value") .addAttribute("attr2", 2) .addHeader("head", "value") .setContentType(Type.ContentType.HTML.getContentType()); // 直接創(chuàng)建視圖對象 _view = new JspView("/demo/test"); // 下面三種方式的結果是一樣的,使用請求路徑對應的視圖文件返回 _view = View.jspView(); _view = JspView.bind(); _view = new JspView();
WebMVC模塊提供的視圖
JspView:JSP視圖;
View.jspView("/demo/test.jsp"); // = "jsp:/demo/test"
FreemarkerView:Freemarker視圖;
View.freemarkerView("/demo/test.ftl"); // = "freemarker:/demo/test"
VelocityView:Velocity視圖;
View.velocityView("/demo/test.vm"); // = "velocity:/demo/test"
TextView:文本視圖;
View.textView("Hi, YMPer!"); // = "text:Hi, YMPer!"
HtmlView:HTML文件內(nèi)容視圖;
View.htmlView("<p>Hi, YMPer!</p>"); // = "html:<p>Hi, YMPer!</p>"
JsonView:JSON視圖;
// 直接傳遞對象 User _user = new User(); user.setId("..."); ... View.jsonView(_user); // 傳遞JSON字符串 View.jsonView("{id:\"...\", ...}"); // = "json:{id:\"...\", ...}"
BinaryView:二進制數(shù)據(jù)流視圖;
// 下載文件,并重新指定文件名稱 View.binaryView(new File("/temp/demo.txt")) .useAttachment("測試文本.txt"); // = "binary:/temp/demo.txt:測試文本.txt"若不指定文件名稱,則回應頭中將不包含 "attachment;filename=xxx"
ForwardView:請求轉發(fā)視圖;
View.forwardView("/demo/test"); // = "forward:/demo/test"
RedirectView:重定向視圖;
View.redirectView("/demo/test"); // = "redirect:/demo/test"
HttpStatusView:HTTP狀態(tài)視圖
View.httpStatusView(404); // = "http_status:404" View.httpStatusView(500, "系統(tǒng)忙, 請稍后再試..."); // = "http_status:500:系統(tǒng)忙, 請稍后再試..."
NullView:空視圖;
View.nullView();