为什么使用Thymeleaf不能取出request域中的值,但却可以获取ModelAndView中的值?

我使用了Thymeleaf作为模板引擎,在Controller层中,使用request对象存储一个值并传递到前端页面
,在前端页面获取request中的值。

一开始,我的Controller层是这么写的:

@RequestMapping("/getgoodsinfo")
    public String getGoodsInfo(@RequestParam("xx") String goodsId,HttpServletRequest request){
        Goods goods = goodsService.findGoodsInfoByGoodsId(goodsId);
        if(goods == null){
            System.out.println("系统出现异常!");
            return "error";
        }else{
            System.out.println(goods);
            request.setAttribute("modifygoodsinfo", goods);
            return "goodsitemmodify";
        }
    }

但是这样,在前端无论如何都取不出request中的modifygoodsinfo的值:

<div th:object="${modifygoodsinfo}">//这个位置会飘红报错
......
</div>

然后我就将Controller层更改为使用ModelAndView:

@RequestMapping("/getgoodsinfo")
    public ModelAndView getGoodsInfo(@RequestParam("xx") String goodsId,HttpServletRequest request){
        Goods goods = goodsService.findGoodsInfoByGoodsId(goodsId);
        ModelAndView mv = new ModelAndView();
        if(goods == null){
            System.out.println("系统出现异常!");
            mv.setViewName("error");
            return mv;
        }else{
            System.out.println(goods);
            mv.addObject("modifygoodsinfo", goods);
            mv.setViewName("goodsitemmodify");
            return mv;
        }
    }

在前端就能够获取到了:

<div th:object="${modifygoodsinfo}">//这个位置没有飘红报错
......
</div>

为什么使用request不行,但是使用ModelAndView却可以呢?ModelAndView我理解的是和request一样的,只不过它还能够转发视图,这样理解不正确是吗?

1个回答

weixin_41017974
CrownCowcow 请原谅我的愚钝/(ㄒoㄒ)/~~我不是很明白,你给的链接我只知道在Controller中使用Model、ModelMap以及ModelAndView都是一样的,只不过有的不能存储视图。但是我的问题是:为什么使用request不可以但是ModelAndView却可以啊?我不是很懂,希望您帮我直接点明出来
3 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Python+OpenCV计算机视觉

Python+OpenCV计算机视觉

使用Thymeleaf时标签的th:text值不替换,但js是能获取到值的时为什么?

在做一个账号被顶号/被冻结返回登录页面的拦截器, 写了一个返回登录页面的controller,想在返回时候同时提示一下账号退出的原因. 可是从controller传过去的属性在页面上没办法显示.不知道是什么原因. 我的controller代码: ```java @Controller public class RedirectController { @RequestMapping("/backToLogin") public ModelAndView backToLogin() { ModelAndView modelAndView=new ModelAndView(); modelAndView.setViewName("backToLogin"); modelAndView.addObject("msg","后端传值123"); return modelAndView; } } ``` 我的模板页面: ```html <!DOCTYPE html SYSTEM "http://www.thymeleaf.org/dtd/xhtml1-strict-thymeleaf-4.dtd"> <html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>重新登录</title> <script> window.onload=function(){ //alert("账号已退出,请重新登录!"); alert("${msg}"); //window.location.href="../dist/index.html"; } </script> </head> <body> <p th:text="${msg}">P标签默认内容</p> <input value="input默认" th:value="${msg}" /> </body> </html> ``` 启动项目之后,请求/backToLogin页面,显示如下 ![图片说明](https://img-ask.csdn.net/upload/201912/02/1575265487_297084.png) ![图片说明](https://img-ask.csdn.net/upload/201912/02/1575265495_39937.png) 很奇怪,是我哪里写的不对吗?我看官方的例子也是这么写的.... 我的JS里写的alert那里,是获取到后端传过来的msg的,可是标签里面默认的值并不替换是为什么啊... html标签那里xmlns那里也都写了.之前另一个小项目就是这样写的也没什么问题.... 烦请大佬帮我看看 感谢! 配置文件中,spring-thymeleaf相关的内容 ``` spring: # 环境 dev|test|prod profiles: active: dev servlet: multipart: max-file-size: 300MB max-request-size: 1000MB enabled: true jmx: enabled: false thymeleaf: suffix: .html mode: HTML5 encoding: UTF-8 cache: false prefix: classpath:/templates/ mvc: static-path-pattern: /** resources: chain: strategy: content: enabled: true paths: /** freemarker: suffix: .html request-context-attribute: request ``` 找到原因了. 今天没传参试了一下,发现报的错是freemarker的错...发现之前项目里加了freemarker的依赖,配置文件里的suffix也是.html.所以freemarker生效了,thymeleaf不生效... 把suffix改成了.ftl就好了!!!当时依赖和配置文件是从前一个项目搬过来的没仔细看...疏忽了疏忽了...

vue可以使用thymeleaf中的获取参数值方式吗

如题,最近打算做一个前后端分离,刚刚接触vue框架,之前的项目获取后台参数都是使用thymeleaf指定的方式,比如 ``` <a href="#" th:href="@{/about}" class="header" th:text="${blog.user.nickname}"> ``` 这样来获取到用户名和请求Controller,这个在vue中可以这样使用吗,具体应该如何使用,刚刚学习不太明白。

thymeleaf用th:text不能获取到model的值,提示为null

thymeleaf用th:text不能获取到model的值,提示为null; freemarker也是提示为null; 但能取session的值,th标签遍历也不能遍历,json都能正常显示没问题。 ## **controller** ![图片说明](https://img-ask.csdn.net/upload/202001/10/1578625487_609690.png) ## **html** ![图片说明](https://img-ask.csdn.net/upload/202001/10/1578625518_456.png) ## **配置** ``` thymeleaf: cache: false checktemplatelocation: true enabled: true encoding: UTF-8 mode: HTML5 prefix: classpath:/templates/ suffix: .html ```

Thymeleaf表单提交Request method 'POST' not supported

最近在学习使用Thymeleaf,想使用表单向后台提交数据时,遇到了一些问题 ###表单 ``` <!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Title</title> </head> <body> <form th:action="@{/user/register}" method="post"> <a>ID:<input type="text" name="userId"><br/></a> <a>昵称: <input type="text" name="nickname" ><br/></a> <a>密码:<input type="password" name="password" ></a> <input type="submit" value="提交"> </form> </body> </html> ``` ###Controller ``` @Controller @RequestMapping("/user") public class UserController { @PostMapping("/register") public String login(User user){ System.out.println(user); return "/success.html"; } } ``` ###错误 ``` WARN 2384 --- [nio-8080-exec-2] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'POST' not supported] ```

thymeleaf使用ajax进行异步请求,不能获得model绑定的值

向各位大佬请教: 我想利用ajax异步请求的时候,在后台通过model设置thymeleaf的局部变量,然后在thymeleaf的页面通过th:text="${onevar}"引用,但是controller的返回值为json,那么 在前端thymeleaf页面不能通过th:text="${onevar}方式获得,请问这是为什么?请教各位大佬有没有更好的方式实现呢?望各位大佬不吝赐教!

spring thymeleaf 中文乱码

userList.html [code="java"] <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <div><span>用户名:</span><input name="name" value=""/><input type="button" id="search" value="查询"/></div> <div id="user"> </div> <div id="userlist" > <table > <thead> <tr> <th>name</th> <th>age</th> <th>sex</th> </tr> </thead> <tr th:each="sb : ${allUsers}"> <td th:text="${sb.name}"></td> <td th:text="${sb.age}"></td> <td th:text="${sb.sex}"></td> </tr> </table> <a href="thymeleafe/userList">go userList</a> </div> </body> </html> [/code] dispatcher-servlet.xml [code="java"] <bean id="templateResolver" class="org.thymeleaf.templateresolver.ServletContextTemplateResolver"> <property name="prefix" value="/WEB-INF/views/html/" /> <property name="suffix" value=".html" /> <property name="templateMode" value="HTML5" /> <property name="cacheable" value="true" /> <property name="characterEncoding" value="UTF-8"/> </bean> <bean id="templateEngine" class="org.thymeleaf.spring3.SpringTemplateEngine"> <property name="templateResolver" ref="templateResolver" /> </bean> <bean class="org.thymeleaf.spring3.view.ThymeleafViewResolver"> <property name="templateEngine" ref="templateEngine" /> <property name="order" value="1" /> <property name="viewNames" value="thymeleafe/*" /> </bean> [/code] ThymeleafeControler [code="java"] package com.cn.ld.modules.thymeleaf; import java.util.List; @RequestMapping("/thymeleafe/") @Controller public class ThymeleafeControler { @Autowired private UserService userService; @RequestMapping("userList") public String goSerchUserH(HttpServletResponse response) { return "userList"; } @ModelAttribute("allUsers") public List<User> getAllUsers(){ return this.userService.getUserList(); } @RequestMapping("save") public void save(User user){ this.userService.addUser(user); } @RequestMapping("remove") public void save(String name){ User u = this.userService.findByName(name); this.userService.removeUser(u); } } [/code] web.xml [code="java"] <!-- 字符集 过滤器 --> <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping> [/code] pom.xml [code="java"] <!-- thymeleaf --> <dependency> <groupId>org.thymeleaf</groupId> <artifactId>thymeleaf-spring3</artifactId> <version>2.0.17</version> </dependency> <dependency> <groupId>org.thymeleaf</groupId> <artifactId>thymeleaf</artifactId> <version>2.0.17</version> </dependency> [/code] [img]http://dl2.iteye.com/upload/attachment/0086/6304/9fc69b75-4a27-3ed3-b262-77fd356fc4f0.png[/img]

thymeleaf如何设置当有值时显示某模块,没有值时不显示

如题,在用thymeleaf做一个第三方登陆的模块,想实现一个效果,比如用户qq登陆了我的页面,我会获取到用户的相关昵称等信息,把一个qqUser对象存在session中,前端用thymeleaf获取,我现在有一个登录按钮,我想要用户登陆成功后不在显示登录按钮,替换成显示用户的头像和昵称,现在session已经有用户对象了,前端thymeleaf应该怎么写呢,多谢了。 ``` <span th:text="${session.userInfoBean?.nickname}"></span> ``` 这是我现在的写法,没登陆时不会显示文字,但是会有一个空框,很不美观。

spring boot 中使用thymeleaf引用css

![图片说明](https://img-ask.csdn.net/upload/201707/27/1501159521_302815.png) 如图在spring boot 中使用thymeleaf引用css,为什么还是会提示找不到这个CSS,导致最后也没有起到效果,问题出在哪里呢?

springboot -- thymeleaf 前端拿不到后台的数据是为什么?

![图片说明](https://img-ask.csdn.net/upload/202001/03/1578031434_457988.png) ++++++++++ 第一次用thymeleaf,依赖是有导入的。 不知道为什么会这样,请大神指教

controller返回值 thymeleaf取不到

业务流程是:点击个人信息,加载页面并且跳转 ![图片说明](https://img-ask.csdn.net/upload/201904/12/1555078358_122.png) 这里是配置的路径 ![图片说明](https://img-ask.csdn.net/upload/201904/12/1555078207_553161.png) 前台取值(xmlns:th="http://www.thymeleaf.org" 已加): ![图片说明](https://img-ask.csdn.net/upload/201904/12/1555078265_389055.png) 跳转成功,报错: ![图片说明](https://img-ask.csdn.net/upload/201904/12/1555078412_759301.png) 可能是我的redirect吧数据弄丢了?但是如果最后跳转不+redirect的话,页面也跳转失败,不太清楚为什么,我不是配置了的吗 为什么非要redirect才能过去呢,数据为啥报错呢,还请大佬不吝赐教

thymeleaf怎么把值传入template的class中

请教问题: thymeleaf多个页面共用到公共页面,需要根据不同页面把class的active传入公共页面,该如何设置? 我的原意是想通过页面把值传到公共页面,再把值传给ul对应li的class里,但是没有成功! 如图: ![图片说明](https://img-ask.csdn.net/upload/201802/02/1517536651_648342.jpg) 改成如下,仍旧报错,怎么破呢? ![图片说明](https://img-ask.csdn.net/upload/201802/02/1517539165_44326.jpg)

spring boot+ Thymeleaf 数据校验时返回错误信息使用th标签读取不到值

第一次使用springboot中的thymeleaf获取controller中的值,但是提示错误 ![图片说明](https://img-ask.csdn.net/upload/201708/01/1501594163_423423.png) ![图片说明](https://img-ask.csdn.net/upload/201708/01/1501594173_115715.png)

thymeleaf提示不能用,已经按照网上说的做了还是没用,求方案

想了好久还是没办法搞定页面thymeleaf语法不提示的问题 pom.xml ![图片说明](https://img-ask.csdn.net/upload/201903/10/1552226330_284787.png) index.html页面 ![图片说明](https://img-ask.csdn.net/upload/201903/10/1552226418_467007.png) settings这边找不到thymeleaf插件,不知道有没有影响 ![图片说明](https://img-ask.csdn.net/upload/201903/10/1552226659_931074.png) ![图片说明](https://img-ask.csdn.net/upload/201903/10/1552227372_572754.png)

springboot引入thymeleaf后不但thymeleaf用不了,页面都打不开了,这是为什么?

这两天我跟着视频敲代码,一度能够正常页面跳转,后面可能在学新东西的时候做了修改,导致页面无法跳转,而且thymeleaf也无法正常对页面上正在写的th:text进行提醒(怀疑thymeleaf导入失败),无从下手 首先pom.xml引入了web、webjars、thymeleaf的依赖 ``` <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <thymeleaf.version>3.0.7 RELEASE</thymeleaf.version> <thymeleaf-layout-dialect.version>2.1.1</thymeleaf-layout-dialect.version> </properties> <dependencies> <!--web依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--webjars依赖--> <dependency> <groupId>org.webjars</groupId> <artifactId>jquery</artifactId> <version>3.1.1</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency> <!--引入thymeleaf--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>net.sourceforge.nekohtml</groupId> <artifactId>nekohtml</artifactId> <version>1.9.22</version> </dependency> </dependencies> ``` application.proprties中的配置 ``` spring.thymeleaf.prefix=classpath:/templates/ spring.thymeleaf.suffix=.html spring.thymeleaf.check-template-location=true spring.thymeleaf.mode=HTML5 spring.thymeleaf.encoding=UTF-8 spring.thymeleaf.content-type=text/html spring.thymeleaf.cache=false spring.messages.basename=i18n.index spring.messages.cache-seconds=-1 ``` MyConfig配置类,有点不太理解这个,还在消化中 ``` @Configuration public class MyConfig extends WebMvcConfigurerAdapter { @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/index.html").setViewName("index"); } } ``` controller类如下 ``` @Controller public class HelloController { @RequestMapping("/index") public String indexPage(){ return "index"; } } ``` 包结构如下 ![图片说明](https://img-ask.csdn.net/upload/201903/09/1552111056_242064.png) index.html页面上thymeleaf也没有反应 ![图片说明](https://img-ask.csdn.net/upload/201903/09/1552111085_481935.png) 启动后页面跳转出错 ![图片说明](https://img-ask.csdn.net/upload/201903/09/1552111106_141092.png) 经过调查发现是thymeleaf的jar包并没有导进去本地仓库,手动导入后可以进行正常页面跳转,但是 还是不能在前端页面显示thymeleaf语法提示,xmlns:th="http://www.thymeleaf.org"我是加了的啊 同时file--》settings--》plugins里找不到关于thymeleaf的插件,求助!

thymeleaf th:text的值没有数据时报错问题

# thymeleaf th:text的值没有数据时报错问题 求解 怎么让th:text没有数据传过来时不报错

idea中无法引入thymeleaf模板

我在idea的项目中引入thymeleaf模板时,已经在pom.xml中引入了依赖 ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> ``` 也在setting中确认了thymeleaf是打了√的 ![图片说明](https://img-ask.csdn.net/upload/202005/31/1590930911_496209.png) 但是在html文件中引入thymeleaf的命名空间时却是灰色的,也无法用thymeleaf的语法 ![图片说明](https://img-ask.csdn.net/upload/202005/31/1590931076_776692.png) 浏览器显示如下 ![图片说明](https://img-ask.csdn.net/upload/202005/31/1590931123_89532.png) 请问这是什么原因导致的呢?

thymeleaf的取值问题,求大神

![图片说明](https://img-ask.csdn.net/upload/201811/22/1542864610_672089.png) 问题 1、用redpack.variety.description_map.get(‘high_quality_provider_only’)能取到值,不报错 但是用redpack.variety.description_map.high_quality_provider_only为什么报错? 2、上面的数据 redpack.variety.description_map.eticket能去到值,不报错 但是redpack.variety.description_map.phone 为什么报错?

为什么要关闭thymeleaf的缓存

![图片说明](https://img-ask.csdn.net/upload/201808/06/1533530388_198172.png) ## 视频中的老师貌似是新手。。居然没有告诉大家为何要关闭缓存,麻烦知道的给个说法哈。

thymeleaf如何动态改变th:include的值?

使用springboot+thymeleaf,如何使用js或者jQuery动态修改 ``` <div id="tables" th:include="backstage/shoppingMall/orderAll::html"></div> ``` 这种标签的th:include值,就像动态修改iframe的src一样? ``` function toAllOrders() { $("#tables").attr("th:include","backstage/shoppingMall/orderAll::html"); } ``` 这种方式不起作用

2019 Python开发者日-培训

2019 Python开发者日-培训

150讲轻松搞定Python网络爬虫

150讲轻松搞定Python网络爬虫

设计模式(JAVA语言实现)--20种设计模式附带源码

设计模式(JAVA语言实现)--20种设计模式附带源码

YOLOv3目标检测实战:训练自己的数据集

YOLOv3目标检测实战:训练自己的数据集

java后台+微信小程序 实现完整的点餐系统

java后台+微信小程序 实现完整的点餐系统

三个项目玩转深度学习(附1G源码)

三个项目玩转深度学习(附1G源码)

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

2019 AI开发者大会

2019 AI开发者大会

玩转Linux:常用命令实例指南

玩转Linux:常用命令实例指南

一学即懂的计算机视觉(第一季)

一学即懂的计算机视觉(第一季)

4小时玩转微信小程序——基础入门与微信支付实战

4小时玩转微信小程序——基础入门与微信支付实战

Git 实用技巧

Git 实用技巧

Python数据清洗实战入门

Python数据清洗实战入门

使用TensorFlow+keras快速构建图像分类模型

使用TensorFlow+keras快速构建图像分类模型

实用主义学Python(小白也容易上手的Python实用案例)

实用主义学Python(小白也容易上手的Python实用案例)

程序员的算法通关课:知己知彼(第一季)

程序员的算法通关课:知己知彼(第一季)

MySQL数据库从入门到实战应用

MySQL数据库从入门到实战应用

机器学习初学者必会的案例精讲

机器学习初学者必会的案例精讲

手把手实现Java图书管理系统(附源码)

手把手实现Java图书管理系统(附源码)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

.net core快速开发框架

.net core快速开发框架

玩转Python-Python3基础入门

玩转Python-Python3基础入门

Python数据挖掘简易入门

Python数据挖掘简易入门

微信公众平台开发入门

微信公众平台开发入门

程序员的兼职技能课

程序员的兼职技能课

Windows版YOLOv4目标检测实战:训练自己的数据集

Windows版YOLOv4目标检测实战:训练自己的数据集

HoloLens2开发入门教程

HoloLens2开发入门教程

微信小程序开发实战

微信小程序开发实战

Java8零基础入门视频教程

Java8零基础入门视频教程

相关热词 c# 开发接口 c# 中方法上面的限制 c# java 时间戳 c#单元测试入门 c# 数组转化成文本 c#实体类主外键关系设置 c# 子函数 局部 c#窗口位置设置 c# list 查询 c# 事件 执行顺序
立即提问
相关内容推荐