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

使用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条)

报告相同问题?

悬赏问题

  • ¥30 vb net 使用 sendMessage 如何输入鼠标坐标
  • ¥200 求能开发抖音自动回复卡片的软件
  • ¥15 关于freesurfer使用freeview可视化的问题
  • ¥100 谁能在荣耀自带系统MagicOS版本下,隐藏手机桌面图标?
  • ¥15 求SC-LIWC词典!
  • ¥20 有关esp8266连接阿里云
  • ¥15 C# 调用Bartender打印机打印
  • ¥15 我这个代码哪里有问题 acm 平台上显示错误 90%,我自己运行好像没什么问题
  • ¥50 C#编程中使用printDocument类实现文字排版打印问题
  • ¥15 找会编程的帅哥美女 可以用MATLAB里面的simulink编程,用Keil5编也可以。