Java 如何将Freemarker模板中的表单输入数据获取到SpringMVC控制器中?

Java 如何将Freemarker模板中的表单输入数据获取到SpringMVC控制器中?,java,spring-mvc,freemarker,Java,Spring Mvc,Freemarker,我试图从freemarker模板生成的表单接收简单的文本输入。调用了正确的方法,但是模型是空的,我希望填充它 我是在一个预先存在的应用程序的上下文中工作的,否则我早就把这种组合抛到一边,转而使用straight Spring MVC/JSP实现 我已经阅读了网络上的每一篇教程,以及stackoverflow中关于这个主题的许多帖子,但我仍然没有掌握一些东西。无论我缺少什么,都可能是如此简单,以至于没有人愿意发帖 应用程序中的示例没有太大帮助,因为它们是用足够的间接方式构造的,我根本看不出它们是如

我试图从freemarker模板生成的表单接收简单的文本输入。调用了正确的方法,但是模型是空的,我希望填充它

我是在一个预先存在的应用程序的上下文中工作的,否则我早就把这种组合抛到一边,转而使用straight Spring MVC/JSP实现

我已经阅读了网络上的每一篇教程,以及stackoverflow中关于这个主题的许多帖子,但我仍然没有掌握一些东西。无论我缺少什么,都可能是如此简单,以至于没有人愿意发帖

应用程序中的示例没有太大帮助,因为它们是用足够的间接方式构造的,我根本看不出它们是如何工作的

自由标记模板

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

<form name="model" method="post">
  <input type="text" name="user" id="user" value="${model.user}"/>

  <input type="hidden" id="submission" name="submission"/>
  <input type="submit" name="test" id="test" value="Test" onclick="document.getElementById('submission').value = 'test'"/>
</form>

最后,我无法使用ModelMap作为输入。我认为原因是,尽管Spring有一百万种方法来完成任何给定的任务,但freemarker集成不如jsp集成那么健壮

spring有一个鲜为人知但广泛使用的特性,它通过名称将表单元素解析为方法参数。根据其他人的评论,我认为这没有很好的记录。但是,由于它是GRAILS框架上Groovy的核心,所以我相信将它作为Spring的核心是安全的。 我最后使用的解决方案是:

@RequestMapping(value = "/config", method = RequestMethod.POST)
public ModelMap postConfig(String user) { 
    logger.debug("User name was {}", user); // Why is model empty here?

// ... snip ...
    model.put("user", user);
    return model;
}

Spring按类型和名称将表单实体解析为控制器方法参数。这对我的意图来说有点不方便,但它可以在我可以使用它的地方获取数据。

您是否尝试过用(at)SessionAttributes(“model”)注释类。这段春天过去给我带来了太多的悲伤。问题是有这么多不同的做事方式,我会试试看。
@RequestMapping(value = "/config", method = RequestMethod.POST)
public ModelMap postConfig(String user) { 
    logger.debug("User name was {}", user); // Why is model empty here?

// ... snip ...
    model.put("user", user);
    return model;
}