@spring.formInput в итераторе #list

<#list flowList as flow>
    <@spring.formInput "flow.createDatetime" />
</#list>

flowList — это список_массивов.

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.


person Ickhyun Kwon    schedule 04.11.2011    source источник


Ответы (3)


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

<#list flowList as flow>
   <#assign flowDate = flow.createDatetime />
   <@spring.formInput "flowDate" />
<\#list>
person Danalog    schedule 04.11.2011

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

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

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

person Muel    schedule 26.07.2012

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

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

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

<input type="text" id="flowList0.createDatetime" name="flowList[0].createDatetime" value="..." />
person Adnan Mamajiwala    schedule 09.01.2018