gpt4 book ai didi

java - 下拉框 - 从 Spring MVC 模型/上下文到使用 freemarker 的表单

转载 作者:搜寻专家 更新时间:2023-10-31 19:34:27 26 4
gpt4 key购买 nike

这应该是非常基本的,但我在网上找不到任何关于它的信息,只有零碎的东西,我似乎无法组合在一起..

我们使用带有 freemarker 的 Spring MVC。现在我想向我的页面添加一个表单,允许我从预定义列表中选择一个值(需要在后端访问数据库)。

我的 Controller :

@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public ModelAndView get(@PathVariable Integer id) {

// stuff..
ModelAndView mav = new ModelAndView();

mav.addObject("targetObject", new TargetObject());
mav.addObject("options", Arrays.asList("a", "b", "c"));
mav.setViewName("someview");

return mav;
}

我找到了 freemarkers spring 支持 spring.ftl看来我应该使用 <@spring.formSingleSelect>我试过这样:

someView.ftl:

<#import "../spring.ftl" as spring />

<form action="somePath" method="POST">
<@spring.formSingleSelect "targetObject.type", "options", " " />
<input type="submit" value="submit"/>
</form>

所以 targetObject.type 似乎是由宏自动绑定(bind)的。

但是如何将我的选项放入 freemarker 序列中,以便宏可以创建选项?

现在我得到:

Expected collection or sequence. options evaluated instead to freemarker.template.SimpleScalar on line 227, column 20 in spring.ftl.
The problematic instruction:
----------
==> list options as value [on line 227, column 13 in spring.ftl]
in user-directive spring.formSingleSelect [on line 53, column 9 in productBase/show.ftl]
----------

我也试过:

<@spring.bind "${options}" />

还有更多类似的事情,但没有成功:

freemarker.core.NonStringException: Error on line 48, column 18 in someView.ftl
Expecting a string, date or number here, Expression options is instead a freemarker.template.SimpleSequence

感谢您的帮助!

最佳答案

经过多次改写和重新思考,我终于找到了解决方案:

首先

显然我需要一个 bean 来保持我的选择

第二

选项需要初始化为一个String列表,由Spring MVC提供给页面:

public ModelAndView get() {

// ...
ModelAndView mav = new ModelAndView();
List<String> options = Arrays.asList(getOptionsFromDatabaseAndConvertToStringList());
mav.addObject("options",options );
mav.setViewName("someview");

return mav;
}

第三

options 现在需要绑定(bind)在 freemarker 模板中,然后可以像访问任何其他 freemarker 变量一样访问(即 NO 引号):

<@spring.bind "options" />

<form action="whatever" method="POST">
<@spring.formSingleSelect "targetBean.choice", options, " " />
<input type="submit" value="submit"/>
</form>

关于java - 下拉框 - 从 Spring MVC 模型/上下文到使用 freemarker 的表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11433510/

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