【问题标题】:Array value not populated correctly in form:select tag数组值未在表单中正确填充:选择标签
【发布时间】:2014-12-21 02:12:10
【问题描述】:

 <c:forEach items="${bean.items}" var="element" >
    <c:set var="optionString" value="${element.optionString}"/>
    <%String s = (String)pageContext.getAttribute("optionString");%>
    <form:option  value="<%=s%>">Option Name to be displayed</form:option>
</c:forEach>

在上面的代码中,${bean.items} 是一个字符串数组。和 ${element.optionString} 给字符串值“0000,1234,2345,3456”

我的期望是,如果选择了上述值,则选择标签路径变量“selectedItems”也是一个数组,应该填充一个值“0000,1234,2345,3456”,但“selectedItems”的数组为“0000”、“1234”、“2345”、“3456”四个元素。现在数组大小是四。

我在这里做错了什么?为什么该值没有填充为 Array 中的单个元素?

【问题讨论】:

    标签: java arrays spring spring-mvc


    【解决方案1】:

    您面临的是 Spring MVC 的默认设置。这是因为 Spring MVC 在将 String 转换为 String[] 时使用的分隔符实际上是逗号。在此处查看接受的答案,以了解如何更改它

    How to prevent parameter binding from interpreting commas in Spring 3.0.5?

    【讨论】:

    • 谢谢..,有趣的是,当我在选项标签中有两个值作为 。现在我的路径变量更新为两个元素的数组(0000,01234,02345,0456, 1234,2334,3445,2346)。在这种情况下,它似乎并不完全使用逗号作为分隔符,否则我将在数组中有 12 个元素,但我只有 2 个。对此有什么想法吗?
    • 这很有趣,请求中的路径变量到底是什么样的?无论如何,要消除任何让你感到困惑的东西,你可以简单地通过 StringToArrayConverter 进行调试,看看这两种情况有什么变化
    • 在请求中路径变量仅为字符串[1],但在绑定到命令变量时为字符串[6]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-07
    • 2010-10-16
    • 2012-12-20
    相关资源
    最近更新 更多