You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Spring从Java控制器向HTML传递数据?

从Spring控制器向HTML传递String值的问题排查

当然可以从Spring控制器往HTML传String值啦!你遇到的页面显示${variableName}字面量而不是实际值的问题,本质是Spring没法解析你HTML里的EL表达式,大概率是模板引擎的配置或使用方式出了问题,我给你梳理几个常见的原因和解决办法:

  • 你可能用了纯静态HTML,没有配置模板引擎
    Spring不会自动解析静态HTML文件里的${}表达式,必须使用支持EL解析的模板引擎(比如Thymeleaf、JSP)。纯HTML只能作为静态资源返回,没法接收控制器传递的变量。

  • 如果用Thymeleaf,检查依赖和页面命名空间

    1. 确保项目中引入了Thymeleaf依赖(Spring Boot项目直接引入spring-boot-starter-thymeleaf即可)
    2. 在HTML页面的<html>标签中添加Thymeleaf命名空间:xmlns:th="http://www.thymeleaf.org"
    3. 取值时要使用Thymeleaf的属性,比如th:text="${variableName}",而不是直接写${variableName}。示例:
      <p th:text="${variableName}">默认显示文本</p>
      
  • 如果用JSP,检查视图解析器和EL开关

    1. 确保配置了JSP视图解析器,比如在Spring Boot中可以在application.properties里设置:
      spring.mvc.view.prefix=/WEB-INF/views/
      spring.mvc.view.suffix=.jsp
      
    2. 在JSP页面开头添加指令开启EL表达式:<%@ page isELIgnored="false" %>,有些环境默认会禁用EL。
  • 检查视图文件的位置是否正确

    • Thymeleaf的模板文件默认放在src/main/resources/templates目录下,ModelAndView里的视图名要和文件名一致(不用加.html后缀)
    • JSP文件要放在你配置的前缀目录下,比如上面配置的/WEB-INF/views/

举个完整的Thymeleaf示例:
控制器代码:

@Controller
public class GreetingController {
    @GetMapping("/greet")
    public ModelAndView showGreeting() {
        ModelAndView model = new ModelAndView("greeting");
        model.addAttribute("message", "Hello from Spring Controller!");
        return model;
    }
}

对应的src/main/resources/templates/greeting.html:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Greeting Page</title>
</head>
<body>
    <h1 th:text="${message}">默认问候语</h1>
</body>
</html>

这样配置后,访问/greet就能看到控制器传递的Hello from Spring Controller!文本了。

内容的提问来源于stack exchange,提问作者Andrew Torr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:42:58