Spring MVC和Thymeleaf:如何从模板访问数据

在典型的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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/363415.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JQ css3 导航栏到底部上移

导航栏 .navigation {position: fixed;bottom: 100px;right: 100px;z-index: 100; } .navigation {transition: bottom 2s;-webkit-transition: bottom 2s; } JQ代码 var nav eval($(.navigation).offset().top - $(window).scrollTop()); $(window).on(scroll, function() {v…

SQL2005-使用openrowset 里读取excel文件

很多时候我们都知道使用.net代码去读取word,excel文档&#xff0c;但是我们如何使用sql句语里读取excel文件呢&#xff1a;SQL2005为我们提供了OPENROWSET来访问各种数据源&#xff1a;,当然我还是建议使用.net代码来读取这些文件。这里就不多说了。 我们先看一下官方的解释&am…

@RequestBody ajax 415 400

使用springmvc和Ajax进行数据交互时使用标签RequestBody时我报了这两个错&#xff0c;刚开始对springmvc的使用和注解有点迷&#xff0c;然后踩坑上了。 先说下怎么才会踩上去。首先RequestBody在一个Controller的一个方法中只能用一次&#xff0c;所以如果你使用了两次意图在一…

C#中用WebClient.UploadData 方法上载文件数据

假如某网站有个表单&#xff0c;例如(url: http://localhost/login.aspx)&#xff1a;帐号密码我们需要在程序中提交数据到这个表单&#xff0c;对于这种表单&#xff0c;我们可以使用 WebClient.UploadData 方法来实现&#xff0c;将所要上传的数据拼成字符即可&#xff0c;程…

Java中的SynchronousQueue示例–生产者使用者解决方案

SynchronousQueue是BlockingQueue的一种特殊类型&#xff0c;其中每个插入操作必须等待另一个线程进行相应的删除操作&#xff0c;反之亦然。 当您在SynchronousQueue上调用put&#xff08;&#xff09;方法时&#xff0c;它将阻塞&#xff0c;直到有另一个线程将该元素从Queue…

OnSen UI结合AngularJs打造”美团APP我的”页面 --Hybrid App

1、页面效果图&#xff1a; 演示地址&#xff1a;http://www.nxl123.cn/bokeyuan/meiTuanDemo_mine/ 2、核心代码 mine.html&#xff1a; <ons-page id"mine" ng-controller"MineController"> <!--toolbar开始--> <ons-toolbar>…

[MOSS开发]:通过简单BUG跟踪Demo阐述用户控件对列表的操作

下面的文章我想以一个具体的BUG跟踪Demo来说明MOSS的具体应用,这里面会应用到下面的知识点: 1:用户组,用户的创建,权限分配&#xff1b; 2:列表的概念以及创建&#xff1b; 3:利用用户控件来完成表单的增加加功能&#xff1b; 4:当前域用户查看自己BUG。 BUG跟踪软件在一些…

Maven的课堂笔记4

9.Maven与MyEclipse2014结合 MyEclipse10以上的版本,对Maven支持的就比较好 9.2 Myeclipse配置 本地文件夹的C盘的.m2文件夹下必须得有这个settings.xml文件 不配置这个settings.xml文件的话,myeclipse会从互联网上下载需要的jar包. 9.3 修改pom文件 添加jar包 <project xml…

vue动画

vue 提供了一些显示、隐藏一些不同的过渡&#xff0c;效果主要跟 v-if v-show 动态组件 1. vue 给动画分了 6 个过程&#xff0c;在 css 中扮演 6 个类 .v-enter  定义动画的开始状态 .v-enter-active  定义动画生效时的状态 .v-enter-to  定义动画结束是的状态 .v-leave…

基于AngularJS的Onsen UI --Onsen UI学习笔记

AngularJS与Onsen UI的结合&#xff0c;Onsen UI应用程序实际上是一个AngularJS 1应用程序。 <!doctype html><html lang"en"><head> <meta charset"utf-8"> <link rel"stylesheet" href"lib/onsen/css/…

图数据库的知识表示与推理

图形数据库及其技术生态系统可以为知识表示和推理问题提供优雅&#xff0c;有效的解决方案。 要了解这种说法&#xff0c;我们必须首先了解什么是图形。 图是一种数据结构。 图数据结构的类型很多&#xff0c;但出于本文的目的&#xff0c;我们将重点介绍一种已被称为属性图的类…

解决win2003安装exchangeServer后关机慢的方法

在windows2003上安装exchange2003&#xff08;或者是exchange2000&#xff09;后&#xff0c;很多用户发现服务器关闭变得非常之慢……很不幸的是&#xff0c;我也遇到了这个问题。从日志中的错误信息来分析&#xff0c;和目录服务先于某些服务终止有关。在微软的KB上查了一下&…

vegas 为盖斯

vegas 为盖斯 S键 分割素材U键 分开视频和音频I键渲染开始O渲染结束 默认布局 为盖斯新建项目的参数 剪好后渲染 插入字幕 转载于:https://www.cnblogs.com/GaoNa/p/10562504.html

简单配置 docker swarm

简单配置 docker swarm #准备三台CentOS7 #IP划分 192.168.1.201 virtualBox1 192168.1.202 virtualBox2 192168.1.204 virtualBox3 #三台机器上分别安装docker docker安装 #三台机器上分别配置加速器 vim /etc/docker/daemon.json #该文…

css图片的全屏显示代码-css3

<!DOCTYPE html><html lang"en">  <head>     <meta charset"UTF-8">     <title>Title</title>     <style type"text/css" rel"stylesheet">       *{margin: 0;pad…

COMET彗星(三)构建自己的COMET核心

主题列表&#xff1a; COMET彗星&#xff08;一&#xff09;SERVER PUSH介绍 COMET彗星&#xff08;二&#xff09;基于SERVER PUSH的消息传输 引言&#xff1a; 在上一篇随笔中&#xff0c;对COMET使用的类和作用进行了简短的介绍&#xff0c;从本篇随笔开始&#xff0c;将从实…

如何在JavaServer Pages中使用Salesforce REST API

摘要&#xff1a;本教程提供了一个JSP示例以及如何将其与Salesforce REST API集成。 我们将逐步完成创建外部客户端以使用Force.com &#xff08;同时使用HTTP&#xff08;S&#xff09;和JSON&#xff09;管理您的数据的分步过程。 在此示例中&#xff0c;我将Mac OS X 10.9.…

写在08年“愚人节”

从博客园学了很多东西&#xff0c;是时候该回馈了。谢谢博客园给我们提供这么好的平台交流技术。 刚发了文章习惯性的看了下自己博客的首页代码&#xff0c;感觉日历不够精良。 我做过的一个ajax日历&#xff0c;可以参考解放日报 艺术家具版的日期直达功能的日历&#xff0c;用…

19.3.20 解决pycharm快捷键无法使用问题和熟悉git与码云操作流程

problem&#xff1a;由于Vim插件导致快捷键无法使用&#xff1b; answer&#xff1a;settings→Plugins→搜索到ideaVim→取消选中→apply→重启pycharm&#xff1b; git&#xff1a;创建仓库→生成公钥&#xff08;ssh-keygen -t rsa -C "962891994qq.com"&#xff…

JQuery实现点击按钮切换图片(附源码)--JQuery基础

JQuery实现切换图片相对比较简单&#xff0c;直接贴代码了哈&#xff0c;有注释噢&#xff01;疑问请追加评论哈&#xff0c;不足之处还请大佬们指出&#xff01; 1、案例代码&#xff1a; demo.html&#xff1a; <!DOCTYPE html><html><head>   <me…