Что я должен использовать, если мне нужен собственный конвертер при использовании @RequestParam? - PullRequest
4 голосов
/ 21 октября 2010

У меня есть подпись метода следующим образом

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

И так как у меня есть десятичное значение, специфичное для локали , которое необходимо преобразовать в BigDecimal , есть некоторая аннотация, которая позволяет мне настраивать входящие данные, такие как @Decimal ("###. # ##, ## ") или что-то еще ???

Ответы [ 2 ]

4 голосов
/ 21 октября 2010

Spring 3 имеет @NumberFormat примечание:

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

Вам нужно <mvc:annotation-driven>, чтобы включить его.

Смотри также:

2 голосов
/ 19 августа 2011

В более общем смысле вы можете зарегистрировать пользовательский конвертер с помощью ConversionServiceFactoryBean . После этого вам нужно добавить пользовательский инициализатор веб-привязки к адаптеру обработчика

Пример конфигурации:

<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>    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...