将Spring模型发送到Freemarker头标,没有特定路线

问题描述

从Spring发送到Freemarker时遇到问题。我使用的服务需要从调用方法中获取脚本并将脚本放入head标记中。我对所有页面使用相同的header.ftl。也就是说,我的head.ftl类似于:

<html>
<head>
   // head content
</head>
<body> // But no close tag for body.

在其他情况下,我会这样做:

<#include "header.ftl">
// then continue with body content

这就是我在做什么:

在处理多个RequestMapping的UI控制器中,我添加:

@ModelAttribute("client")
public Client getTheClient() {
    return new Client();
}

此UI控制器中的其他方法主要是:

@RequestMapping(value="/apple")
public void apple(HttpServletRequest req,HttpServletResponse res) {
  // bind the page with a "apple.ftl" templage
}

在head标签中,我这样做:

<script type="text/javascript">${client.getScript()}</script>

但是找不到“客户端”。 (说未定义之类的) 然后我添加

<#import "/spring.ftl as spring">
<@spring.bind "client">

在脚本之前,现在它显示“读取导入的spring.ftl错误”。 (我也不知道spring.ftl在哪里。我只是关注互联网上的其他帖子。)

其他帖子都在谈论为RequestMapping提供特定的路由,并且大多数使用jsp作为前端。但就我而言,情况有所不同。

有人可以帮忙吗?我真的很感激!!!

解决方法

我不知道您的Client对象的样子,也可能有助于发布您的模型。

但是,这是我发现的几件事:

首先,每个控制器都需要url映射。将一个添加到您的getTheClient()中:

@RequestMapping("/client/get",method = RequestMethod.GET)
public ModelAndView getTheClient() {
    ModelAndView mav = new ModelAndView("index");
    mav.addObject("client",new Client());

    return mav;
}

第二,您引用模型和访问模型的方式不正确。正确的方法

<script type="text/javascript">${client.name}</script>

假设模型名称为Client,并且字段为name(无需使用set或获取prefexes)。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...