我有一个JSP通过Spring控制器填充int []和string []。当索引的字符串值为""时,JSP将呈现字符串[]中的所有值。
Controller填充string [] id&值。
form.setIds(ids);
form.setValues(values);
JSP遍历并填充表格
<c:forEach items="${form.ids}" varStatus="status" var="id">
<form:input path="values" value="${form.values[status.index]}" />
当字符串[]:值包含:{&#34; a&#34;,&#34; b&#34;,&#34;&#34;,&#34; d&#34;}时,元素0,1,3表示预期:0 =&#34; a&#34;,1 =&#34; b&#34;,3 =&#34; d&#34;。元素2显示:&#34; a,b,d&#34;用于输出到该行的JSP。
我尝试了几种渲染方式,例如在JSTL taglib中包装输出,以及更改为数组列表而不是原始字符串[]。
我有一种感觉,我忽略了一些东西:)
答案 0 :(得分:1)
我认为你的错误存在于其他地方。如果你的数组内容确实是一个空字符串,那么${form.values[status.index]}
确实会打印出来。
答案 1 :(得分:0)
这个花了一段时间。
问题是在表单输入上使用path =“values”,当我们点击一个空元素时,它会显示所有“值”而不是预期的空值。修复是使用path =“values [$ {status.index}]”作为表单输入。
另外,为了使用元素,我不得不将我的底层表单从使用String []对象切换到List对象。这是因为加载时没有初始化String []值的形式,而我可以初始化为ArrayList而无需为字符串数组指定特定长度。