Voir


Le module

WebMVC prend en charge une variété de technologies d'affichage, notamment JSP, Freemarker, Velocity, Text, HTML, JSON, Binary, Forward, Redirect, HttpStatus, etc. Les vues personnalisées peuvent également être implémentées via l'extension d'interface IView

Controller ; view La méthode de représentation
  • renvoie le type d'interface IView ;
  • exprime un type de vue via une chaîne ;
  • n'a pas de valeur de retour ou la valeur de retour est vide, la vue JspView correspondant au chemin RequestMapping actuel sera utilisée ;
Configuration du chemin du fichier de vue

Le chemin de base du fichier de vue du contrôleur doit commencer et se terminer par '/', la valeur par défaut est /WEB-INF/templates/;

Exemple d'opération d'objet View
Le fichier de vue peut omettre le nom de l'extension, et les paramètres de demande et le type de contenu peuvent être définis directement via l'interface IView
  ymp.configs.webmvc.base_view_path=/WEB-INF/templates/

Vue fournie par le module WebMVC ;
JspView : vue JSP ;
  // 通过View对象创建视图对象
  IView _view = View.jspView("/demo/test")
          .addAttribute("attr1", "value")
          .addAttribute("attr2", 2)
          .addHeader("head", "value")
          .setContentType(Type.ContentType.HTML.getContentType());

  // 直接创建视图对象
  _view = new JspView("/demo/test");

  // 下面三种方式的结果是一样的,使用请求路径对应的视图文件返回
  _view = View.jspView();
  _view = JspView.bind();
  _view = new JspView();

FreemarkerView : vue Freemarker
  View.jspView("/demo/test.jsp");
  // = "jsp:/demo/test"

VelocityView : vue Vitesse ;
  View.freemarkerView("/demo/test.ftl");
  // = "freemarker:/demo/test"
TextView : vue texte ;

  View.velocityView("/demo/test.vm");
  // = "velocity:/demo/test"
HtmlView : vue du contenu du fichier HTML

  View.textView("Hi, YMPer!");
  // = "text:Hi, YMPer!"
JsonView : vue JSON ;

  View.htmlView("<p>Hi, YMPer!</p>");
  // = "html:<p>Hi, YMPer!</p>"
BinaryView : vue du flux de données binaires ;
Si le fichier le nom n'est pas spécifié, l'en-tête de réponse sera "attachment;filename=xxx" ne sera pas inclus dans

ForwardView : demande de vue de transfert
  // 直接传递对象
  User _user = new User();
  user.setId("...");
  ...
  View.jsonView(_user);

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

RedirectView : vue de redirection ;
  // 下载文件,并重新指定文件名称
  View.binaryView(new File("/temp/demo.txt"))
          .useAttachment("测试文本.txt");
  // = "binary:/temp/demo.txt:测试文本.txt"
HttpSt atusView : vue de l'état HTTP

  View.forwardView("/demo/test");
  // = "forward:/demo/test"

NullView : vue vide
  View.redirectView("/demo/test");
  // = "redirect:/demo/test"