在典型的Spring MVC应用程序中, @Controller类负责使用数据准备模型映射并选择要呈现的视图。 该model map允许视图技术的完整抽象,对于Thymeleaf而言,它被转换为Thymeleaf VariablesMap对象,该对象使所有定义的变量可用于模板中执行的表达式。

弹簧模型属性

Spring MVC调用在执行视图model attributes期间可以访问的数据。 Thymeleaf语言中的等效术语是context variables 。 在Spring MVC中,有几种将模型属性添加到视图的方法。 以下是一些常见情况:通过其addAttribute方法向Model添加属性:

@RequestMapping(value = "message", method = RequestMethod.GET)
public String messages(Model model) {model.addAttribute("messages", messageRepository.findAll());return "message/list";}

返回包含模型属性的`ModelAndView`:

@RequestMapping(value = "message", method = RequestMethod.GET)
public ModelAndView messages() {ModelAndView mav = new ModelAndView("message/list");mav.addObject("messages", messageRepository.findAll());return mav;}

通过带有@ModelAttribute注释的方法公开公共属性:

@ModelAttribute("messages")
public List<Message> messages() {return messageRepository.findAll();}

您可能已经注意到,在上述所有情况下,`messages`属性都已添加到模型中,并且在Thymeleaf视图中可用。

在Thymeleaf中,可以使用以下语法访问这些模型属性:`$ {attributeName}`,它是Spring EL表达式。

您可以使用Thymeleaf在视图中访问模型属性,如下所示:

<tr th:each="message : ${messages}"><td th:text="${message.id}">1</td><td><a href="#" th:text="${message.title}">Title ...</a></td><td th:text="${message.text}">Text ...</td></tr>

请求参数

在Thymeleaf视图中可以轻松访问请求参数。 请求参数从客户端传递到服务器,例如:

https://example.com/query?q=Thymeleaf+Is+Great!

假设我们有一个@Controller,它发送带有请求参数的重定向:

@Controllerpublic class SomeController {@RequestMapping("/")public String redirect() {return "redirect:/query?q=Thymeleaf Is Great!";}}

为了访问q参数,您可以使用param。前缀:

<p th:text="${param.q[0]}" th:unless="${param.q == null}">Test</p>

在上面的示例中需要注意两点:

  • $ {param.q!= null}`检查是否设置了参数`q`
  • 参数始终是字符串数组,因为它们可以是多值的(例如`https://example.com/query?q=Thymeleaf%20Is%20Great!&q=Really%3F)

访问请求参数的另一种方法是使用特殊对象#httpServletRequest,它使您可以直接访问javax.servlet.http.HttpServletRequest对象:

<p th:text="${#httpServletRequest.getParameter('q')}" th:unless="${#httpServletRequest.getParameter('q') == null}">Test</p>

会话属性

在下面的示例中,我们将`mySessionAttribute`添加到会话中:

@RequestMapping({"/"})
String index(HttpSession session) {session.setAttribute("mySessionAttribute", "someValue");return "index";}

与请求参数类似,可以使用`session.`前缀访问会话属性:

<div th:text="${session.mySessionAttribute}">[...]</div>

或者通过使用#httpSession,可以直接访问javax.servlet.http.HttpSession对象。

ServletContext属性,Spring Bean

在丹尼尔·费尔南德斯( DanielFernández )的大力帮助下,我为thymeleaf.org写的这篇文章的完整版本可以在这里找到: http : //www.thymeleaf.org/springmvcaccessdata.html

翻译自: https://www.javacodegeeks.com/2014/05/spring-mvc-and-thymeleaf-how-to-acess-data-from-templates.html

Spring MVC和Thymeleaf:如何从模板访问数据相关推荐

  1. Spring MVC 5 + Thymeleaf 基于Java配置和注解配置

    Spring MVC 5 + Thymeleaf 注解配置 Spring的配置方式一般为两种:XML配置和注解配置 Spring从3.0开始以后,推荐使用注解配置,这两种配置的优缺点说的人很多,我就不 ...

  2. Spring MVC全局异常后返回JSON异常数据

    Spring MVC全局异常后返回JSON异常数据 参考文章: (1)Spring MVC全局异常后返回JSON异常数据 (2)https://www.cnblogs.com/exmyth/p/560 ...

  3. springboot 入门教程(4)--web开发(spring mvc和Thymeleaf模板,带源码)

    2019独角兽企业重金招聘Python工程师标准>>> 首先回顾下前几篇的内容:springboot 入门教程(1),springboot 入门教程-Thymeleaf(2), sp ...

  4. Spring MVC,Thymeleaf,Spring Security应用程序中的CSRF保护

    跨站点请求伪造(CSRF)是一种攻击,它迫使最终用户在当前已通过身份验证的Web应用程序上执行不需要的操作. 如果您使用Spring Security 3.2及更高版本,在Spring MVC / T ...

  5. spring mvc 中对静态资源的访问配置

    在web.xml中配置spring mc servlet 对url-pattern设置时,排除在spring的servlet之外. <servlet><servlet-name> ...

  6. Spring mvc通过访问者IP限制接口访问频率

    我们有的时候系统里面有的用户接口为了控制访问频率,需要使用到,笔记走一波 环境: spring spring mvc Guava:谷歌高并发工具,下面是maven <!--谷歌guava高并发处 ...

  7. Spring MVC配置静态资源的正常访问

    SpringMVC如果过滤器过滤范围配置了/或者/*,那么框架会过滤所有请求,包括自己写的请求和静态资源请求,这样静态资源就不能正常加载,包括js文件.css文件.图片资源访问的时候都会出现404页面 ...

  8. 小唐开始学 Spring Boot——(3)利用mybatis访问数据表

    文章目录 一.过程 创建新项目 创建数据表 创建返回结构 查询函数 方法集成 访问网站 配置数据库 成功 二.项目代码 Testlist.java Test1.java TestMapper.java ...

  9. Spring MVC 返回视图时添加的模型数据------POJO

    POJO(Plain Old Java Objects)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称. 使用POJO名称是为了避免和 EJB混淆起来, 而且简 ...

最新文章

  1. 【路径规划】Astart算法——图文直观解析
  2. AI圈真魔幻!谷歌最新研究表明卷积在NLP预训练上竟优于Transformer?LeCun暧昧表态...
  3. 用c语言编写程序学工系统,[工学]chap02_用C语言编写程序.ppt
  4. rm: cannot remove directory `test': Permission denied
  5. 2.5 矩阵乘法规则
  6. nlp gpt论文_GPT-3:NLP镇的最新动态
  7. 学生HTML5今后的打算,今后我打算小学生日记
  8. ios学习路线_OC基础语法
  9. Mac电脑彻底卸载office(Excel,Word)
  10. 20中氨基酸名称、简写及化学式
  11. 当当网商品详情API接口(当当商品详情接口,当当商品问答接口,当当抢购价接口,当当商品列表接口,当当商品评论接口)代码对接教程
  12. gitlab安装配置
  13. 服务器支持 TLS Client-initiated 重协商攻击(CVE-2011-1473复现验证)
  14. python数据分析与应用-Python数据分析与应用-课后习题答案
  15. html 获取声音频谱,[前端]利用WebAudioAPI获取音频频谱(html5音频可视化)
  16. @Autowired作用在方法上
  17. 印度人还上不起网?每天超过800万人在火车站使用免费WiFi
  18. self与static的浅薄理解
  19. 【网页设计】期末大作业html+css(体育网站)--杜丹特篮球介绍8页 带报告
  20. 一次蚂蚁金服的面试经历

热门文章

  1. alertmanager 告警恢复_Prometheus配置企业微信告警
  2. jvm的client与server工作模式
  3. review_core_basic_java(1)java程序设计概述
  4. IDEA集成maven流程图详细介绍
  5. dmn是大脑中哪个区域_DMN中的函数式编程:感觉就像再次重读我的大学课程一样...
  6. lineseparator_首选System.lineSeparator()以用Java编写系统相关的行分隔符字符串
  7. 得到appd url_AppD方法:Java 9支持
  8. nodejs异步测试_异步过程的自动化测试
  9. jboss fuse 教程_使用JBoss Fuse和OpenShift进行Cloud Native Camel骑行
  10. ajax 示例_通过示例了解挥发