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

SpringBoot中如何将Model变量转换为Context变量?

SpringBoot中Model转模板引擎Context的问题

当前代码

model.addAttribute("var1", var1);
model.addAttribute("var99", var99);

目标重构代码

Context ctx = new Context();

ctx.setVariable("var1", var1);
ctx.setVariable("var99", var99);

问题

是否可以直接将model转换为ctx?最终需求是执行模板引擎渲染:

String htmlTemplate = myTemplateEngine.process("html/foo.html", ctx);

解决方案

可以直接转换,以下是两种实用方式:

  • 通用遍历转换
    借助Spring Model接口的asMap()方法获取所有属性键值对,批量写入Context,适配所有Model实现类:

    Context ctx = new Context();
    model.asMap().forEach(ctx::setVariable);
    
  • 过滤无关属性(可选)
    如果Model中包含Spring内部的系统属性(比如绑定校验结果BindingResult),可以过滤后再写入,避免模板上下文被污染:

    Context ctx = new Context();
    model.asMap().entrySet().stream()
        .filter(entry -> !entry.getKey().startsWith("org.springframework"))
        .forEach(entry -> ctx.setVariable(entry.getKey(), entry.getValue()));
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 20:25:46