<#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
。
答案 0 :(得分:2)
您是否尝试过进行中间分配?我在其他StackOverflow页面上看到了这个问题,比如Freemarker syntax for a form for a collection of objects (Spring 3 MVC):
<#list flowList as flow>
<#assign flowDate = flow.createDatetime />
<@spring.formInput "flowDate" />
<\#list>
答案 1 :(得分:0)
以下解决方法对我有用,但非常难看:
<#list flowList as flow>
<#assign index=flowList?seq_index_of(flow)>
<@spring.formInput "flowList[${index}].createDatetime" />
</#list>
发布上述表单时,您需要确保流列表预先填充了空流。或者,只使用Spring的AutoPopulatingList
作为流列表实现。
答案 2 :(得分:0)
对于弹簧绑定对象,必须提供准确的引用。因此,您需要在标记中添加索引。当您将表单发回并在控制器方法中将flowlist对象作为请求主体时,需要这样做。
<#list flowList as flow>
<@spring.formInput "flowList[${flow_index}].createDatetime" />
</#list>
渲染后,如果你看一下HTML就像
<input type="text" id="flowList0.createDatetime" name="flowList[0].createDatetime" value="..." />