使用TreeMap和BigDecimal时可以使用ognl.noconversion(Struts2)

时间:2015-07-17 14:17:48

标签: struts2 ognl

我正在开发一个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对象。

所以我的问题是:

  1. 使用Struts2 / OGNL做TreeMap - s需要特殊行为吗?
  2. 我是否需要为BigDecimalTreeMap或其他内容创建自定义转换器?

0 个答案:

没有答案