Java 如果在使用@RequestParam时需要自定义转换器,我应该使用什么?

Java 如果在使用@RequestParam时需要自定义转换器,我应该使用什么?,java,spring,spring-mvc,Java,Spring,Spring Mvc,我有一个方法签名,如下所示 public void deposit(@RequestParam("accountId") Integer accountId, @RequestParam("amount") BigDecimal amount) {...} 因为我有一个特定于语言环境的十进制值,需要转换为BigDecimal,所以是否有一些注释允许我设置诸如@decimal(“#######,####”)或其他内容之类的传入数据 public void

我有一个方法签名,如下所示

public void deposit(@RequestParam("accountId") Integer accountId, 
                    @RequestParam("amount") BigDecimal amount) {...}
因为我有一个特定于语言环境的十进制值,需要转换为BigDecimal,所以是否有一些注释允许我设置诸如@decimal(“#######,####”)或其他内容之类的传入数据

public void deposit(@RequestParam("accountId") Integer accountId,  
    @RequestParam("amount") @NumberFormat(pattern = "###.###,##") BigDecimal amount) 
{...} 
您需要
才能启用它

另请参见:


更一般地说,您可以向注册自定义转换器。一旦您这样做了,您将需要连接到处理程序适配器

配置示例:

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <property name="webBindingInitializer">
      <bean class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
          <property name="conversionService" ref="conversionService"/>
      </bean>
    </property>
</bean>

<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
    <property name="converters">
        <list>
            <ref bean="myCustomConverter"/>
        </list>
    </property>
</bean>    


Nice one(+1)你知道我是否可以注册一个全局转换器来避免@NumberFormat注释吗?@Arthur:也许你可以通过自定义
FormattingConversionServiceFactoryBean
来为
BigDecimal
安装一个自定义格式化程序,看看它是如何在<代码> MVC展示箱中完成的。考虑使用字符串参数类型来请求参数。如果在代码中执行数字转换,则会捕获针对格式不正确的参数引发的NumberFormatException。