gpt4 book ai didi

java - 如何从 Freemarker 模板中的表单输入中获取数据到 spring MVC Controller 中?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:21:03 28 4
gpt4 key购买 nike

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

我在一个预先存在的应用程序的上下文中工作,否则我早就将这种组合扔到一边,直接转向 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>

Controller 代码:

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

return model;
}

最佳答案

最后,我无法使用 ModelMap 作为输入。我认为原因在于,虽然 Spring 有上百万种方法来完成任何给定任务,但 freemarker 集成不如 jsp 集成强大。

spring 有一个鲜为人知但广泛使用的特性,它通过名称将表单元素解析为方法参数。根据其他人的评论,我认为它没有得到很好的记录。但是,由于它是 Groovy on Grails 框架的核心,我相信将它视为 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 通过类型和名称将表单实体解析为 Controller 方法参数。这对我的意图来说有点不方便,但它会在我可以使用它的地方获取数据。

关于java - 如何从 Freemarker 模板中的表单输入中获取数据到 spring MVC Controller 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29104261/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com