我正在开发一个Struts2应用程序。
发布表单时我遇到了这个错误:HTTP 400 State - The request contains invalid parameters
(翻译自法语)。
我使用的表单是从 TreeMap 创建的,其中 BigDecimals 表示值:
private TreeMap<Integer, BigDecimal> myTreeMap;
在ftl:
<#list model.myTreeMap?keys as key>
<tr>
<td> ${key} </td>
<td> <@s.textfield name="model.myTreeMap[${key}]" value="${model.myTreeMap.get(key)}" maxlength=3 /> </td>
</tr>
</#list>
问题是,感觉OGNL将值视为整数,而不是BigDecimal。实际上,当在TreeMap setter中进行调试时,我收到了这个错误:
ognl.noconversionpossible
我在关注日期之前看到过这个错误,而我所做的就是创建自定义转换器。
但这次问题似乎有点不同。实际上,如果我不在表单中使用TreeMap
,而只使用单个BigDecimal
,那么struts会设法正确填充我的Java对象。
所以我的问题是:
TreeMap
- s需要特殊行为吗?BigDecimal
或TreeMap
或其他内容创建自定义转换器?