@ spring.formInput в #list итераторе - PullRequest
3 голосов
/ 04 ноября 2011
<#list flowList as flow>
    <@spring.formInput "flow.createDatetime" />
</#list>

flowList - это arrayList.

freemarker.template.TemplateModelException: Method public org.springframework.web.servlet.support.BindStatus org.springframework.web.servlet.support.RequestContext.getBindStatus(java.lang.String) throws java.lang.IllegalStateException threw an exception when invoked on org.springframework.web.servlet.support.RequestContext@8bc713e with arguments of types [java.lang.String,]
    at freemarker.ext.beans.OverloadedMethodModel.exec(OverloadedMethodModel.java:134)
    at freemarker.core.MethodCall._getAsTemplateModel(MethodCall.java:93)

Как разрешить @spring.formInput в #list.

Ответы [ 3 ]

2 голосов
/ 05 ноября 2011

Вы пытались выполнить промежуточное задание?Я видел эту проблему на других страницах StackOverflow, таких как Синтаксис Freemarker для формы для коллекции объектов (Spring 3 MVC) :

<#list flowList as flow>
   <#assign flowDate = flow.createDatetime />
   <@spring.formInput "flowDate" />
<\#list>
0 голосов
/ 09 января 2018

Чтобы пружина связала объект, необходимо указать точную ссылку. Следовательно, вам нужно добавить индекс в тег. Это необходимо, когда вы отправляете форму обратно и хотите, чтобы объект списка потоков был телом запроса в методе контроллера.

<#list flowList as flow>
    <@spring.formInput "flowList[${flow_index}].createDatetime" />
</#list>

После рендеринга, если вы посмотрите на HTML, это будет похоже на

<input type="text" id="flowList0.createDatetime" name="flowList[0].createDatetime" value="..." />
0 голосов
/ 26 июля 2012

Следующий обходной путь работает для меня, но довольно уродливо:

<#list flowList as flow>
    <#assign index=flowList?seq_index_of(flow)>
    <@spring.formInput "flowList[${index}].createDatetime" />
</#list>

Когда опубликованная выше форма будет опубликована, вам необходимо убедиться, что список потоков предварительно заполнен пустыми потоками.В качестве альтернативы, просто используйте Spring * AutoPopulatingList в качестве реализации списка потоков.

...