KimiKudo 2019-12-02 13:46 采纳率: 100%
浏览 2612
已采纳

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

在做一个账号被顶号/被冻结返回登录页面的拦截器,

写了一个返回登录页面的controller,想在返回时候同时提示一下账号退出的原因.

可是从controller传过去的属性在页面上没办法显示.不知道是什么原因.

我的controller代码:

@Controller
public class RedirectController {

    @RequestMapping("/backToLogin")
    public ModelAndView backToLogin() {
        ModelAndView modelAndView=new ModelAndView();
        modelAndView.setViewName("backToLogin");
        modelAndView.addObject("msg","后端传值123");
        return modelAndView;
    }
}

我的模板页面:

<!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页面,显示如下
图片说明
图片说明

很奇怪,是我哪里写的不对吗?我看官方的例子也是这么写的....

我的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就好了!!!当时依赖和配置文件是从前一个项目搬过来的没仔细看...疏忽了疏忽了...

  • 写回答

4条回答 默认 最新

  • weixin_43466240 2019-12-02 16:15
    关注

    代码运行结果来看,你的thymeleaf好像并没起作用,反而是EL表达式起作用了,检查一下配置。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况