u010827544
KimiKudo
采纳率100%
2019-12-02 13:46

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

5

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

写了一个返回登录页面的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 weixin_43466240 2年前

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

    点赞 评论 复制链接分享
  • shibushisha123 shibushisha123 2年前


    把 value="input默认"删掉试试

    点赞 评论 复制链接分享
  • tiankongzhichenglyf tkzc_shark 2年前

    开发工具中未安装thymeleaf插件

    点赞 评论 复制链接分享
  • dabocaiqq dabocaiqq 2年前