これは非常に基本的なはずですが、ウェブでそれについて何も見つけることができません..
freemarker で Spring MVC を使用しています。ここで、事前定義されたリストから値を選択できるフォームをページに追加したいと考えています (バックエンドでデータベース アクセスが必要です)。
私のコントローラー:
@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.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 はマクロによって自動的にバインドされているようです。
しかし、マクロがオプションを作成できるようにするにはどうすれば私のオプションを 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
助けてくれてありがとう!