視圖(View)

2018-12-24 22:48 更新

WebMVC模塊支持多種視圖技術(shù),包括JSP、Freemarker、Velocity、Text、HTML、JSON、Binary、Forward、Redirect、HttpStatus等,也可以通過IView接口擴(kuò)展實(shí)現(xiàn)自定義視圖;

控制器視圖的表示方法
  • 通過返回IView接口類型;
  • 通過字符串表達(dá)一種視圖類型;
  • 無返回值或返回值為空,將使用當(dāng)前RequestMapping路徑對(duì)應(yīng)的JspView視圖;
視圖文件路徑配置

控制器視圖文件基礎(chǔ)路徑,必須是以 '/' 開始和結(jié)尾,默認(rèn)值為/WEB-INF/templates/;

  ymp.configs.webmvc.base_view_path=/WEB-INF/templates/
視圖對(duì)象操作示例

視圖文件可以省略擴(kuò)展名稱,通過IView接口可以直接設(shè)置請(qǐng)求參數(shù)和內(nèi)容類型;

  // 通過View對(duì)象創(chuàng)建視圖對(duì)象
  IView _view = View.jspView("/demo/test")
          .addAttribute("attr1", "value")
          .addAttribute("attr2", 2)
          .addHeader("head", "value")
          .setContentType(Type.ContentType.HTML.getContentType());

  // 直接創(chuàng)建視圖對(duì)象
  _view = new JspView("/demo/test");

  // 下面三種方式的結(jié)果是一樣的,使用請(qǐng)求路徑對(duì)應(yīng)的視圖文件返回
  _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視圖;

  // 直接傳遞對(duì)象
  User _user = new User();
  user.setId("...");
  ...
  View.jsonView(_user);

  // 傳遞JSON字符串
  View.jsonView("{id:\"...\", ...}");
  // = "json:{id:\"...\", ...}"

BinaryView:二進(jìn)制數(shù)據(jù)流視圖;

  // 下載文件,并重新指定文件名稱
  View.binaryView(new File("/temp/demo.txt"))
          .useAttachment("測(cè)試文本.txt");
  // = "binary:/temp/demo.txt:測(cè)試文本.txt"

若不指定文件名稱,則回應(yīng)頭中將不包含 "attachment;filename=xxx"

ForwardView:請(qǐng)求轉(zhuǎn)發(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)忙, 請(qǐng)稍后再試...");
  // = "http_status:500:系統(tǒng)忙, 請(qǐng)稍后再試..."

NullView:空視圖;

  View.nullView();
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)