代码之家  ›  专栏  ›  技术社区  ›  Arthur Ronald

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

  •  4
  • Arthur Ronald  · 技术社区  · 15 年前

    如果方法签名如下

    public void deposit(@RequestParam("accountId") Integer accountId, 
                        @RequestParam("amount") BigDecimal amount) {...}
    

    因为我有一个特定于地区的十进制值 ,是否有一些注释允许我设置传入数据,例如@Decimal(“######.#####,###”)或其他???

    2 回复  |  直到 15 年前
        1
  •  4
  •   axtavt    15 年前

    弹簧3有 @NumberFormat

    public void deposit(@RequestParam("accountId") Integer accountId,  
        @RequestParam("amount") @NumberFormat(pattern = "###.###,##") BigDecimal amount) 
    {...} 
    

    你需要 <mvc:annotation-driven> 使能。

        2
  •  2
  •   Adam B    14 年前

    更一般地,您可以使用 ConversionServiceFactoryBean . 一旦你这样做了你就需要 add a custom web binding initializer

    示例配置:

    <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>