2017-02-08 19 views
3

私たちは基本的にthis questionポーズと同じ問題を抱えていますが、リストのほかにも、我々はグローバルな解決策を探しています。Springブートでコレクションに変換するときに、Spring MVCがカンマを解釈しないようにするにはどうすればよいですか?

現在、我々はこのように定義されているREST呼び出しがあります。

@RequestMapping 
@ResponseBody 
public Object listProducts(@RequestParam(value = "attributes", required = false) List<String> attributes) { 

を呼び出しが正常に動作し、リストには二つの要素「TEST1:12,3」が含まれます属性:呼び出されたときに「TEST2 TEST1を」このように、次のように呼び出されたときに、 "3":

product/list?attributes=test1:12,3 
0:

product/list?attributes=test1:12,3&attributes=test1:test2 

しかし、リストはまた、 "12 TEST1を" 二つの要素が含まれます属性

この理由は、最初のケースでは、最初のケースでSpringがArrayToCollectionConverterを使用するためです。後者の場合、 "、"をセパレータとして使用して引数を分割するStringToCollectionConverterを使用します。

パラメータでカンマを無視するようにSpringブートを設定するにはどうすればよいですか?可能であれば、ソリューションはグローバルでなければなりません。我々は代わりに、配列のリストを持っているので、

This questionは、私たちのために動作しません。私たちが試みている何

。さらに、これはコントローラーローカルソリューションのみになります。

私も、この設定を追加しようとしました:

CustomStringToCollectionConverter春StringToCollectionConverterのコピーですが、分割せずに、しかし、春のコンバータはまだ優先的に呼び出される
@Bean(name="conversionService") 
public ConversionService getConversionService() { 
    ConversionServiceFactoryBean bean = new ConversionServiceFactoryBean(); 
    bean.setConverters(Collections.singleton(new CustomStringToCollectionConverter())); 
    bean.afterPropertiesSet(); 
    return bean.getObject(); 
} 

私はまた、 "mvcConversionService"をBean名として試しましたが、それでも何も変わりませんでした。

答えて

1

あなたはStringToCollectionConverterを削除し、WebMvcConfigurerAdapter.addFormatters(FormatterRegistry registry)方法であなた自身でそれを置き換えることができます。これは完璧に動作

@Configuration 
public class MyWebMvcConfig extends WebMvcConfigurerAdapter { 
    @Override 
    public void addFormatters(FormatterRegistry registry) { 
    registry.removeConvertible(String.class,Collection.class); 
    registry.addConverter(String.class,Collection.class,myConverter); 
    } 
} 
+0

:このような

何かを! – ircecho

関連する問題