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

如何在Thymeleaf中结合已有Map获取后端传入的变量?

解决HashMap数据SVG动态年份计算问题

这事儿其实很 straightforward,你只需要把代码里硬编码的2020换成后端传入的year变量就行,Thymeleaf的表达式完全支持直接引用模型中的变量。

修改后的SVG代码

<circle 
  th:each="einnahmenUmsatz : ${plotDatenEinnahmen}" 
  th:cx="${100*einnahmenUmsatz.getKey().getMonthValue() + 1200*(einnahmenUmsatz.getKey().getYear()%${year})}" 
  th:cy="${375-20*einnahmenUmsatz.getValue().getNumber().intValue()/1000}" 
  th:data-value="${einnahmenUmsatz.getValue().getNumber().intValue()}" 
  r="4"> 
  <title th:text="${einnahmenUmsatz.getValue()}"></title> 
</circle>

几个要注意的点

  • 核心修改就是把%2020替换成%${year},Thymeleaf会自动从渲染上下文里取你后端设置的year变量来计算坐标
  • 后端一定要把year变量放到Model里,比如在Controller里这么写:
    @GetMapping("/your-chart-page")
    public String renderChart(Model model) {
        // 这里可以是动态获取的年份,比如从请求参数、数据库或者配置文件
        Integer targetYear = 2024; 
        model.addAttribute("year", targetYear);
        // 把plotDatenEinnahmen也放到model里,这个你应该已经在做了
        model.addAttribute("plotDatenEinnahmen", yourHashMapData);
        return "your-template";
    }
    
  • 保证year是数值类型(比如Integer/int),别传字符串,不然取模运算会抛出异常

这样改完之后,你的SVG图表就能根据后端传入的年份动态计算每个点的x坐标了,完全满足你要的动态性需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:18:04