8

Spring の変換サービスを使用しており、独自のコンバーターを登録しています。

public class MyTypeConverter implements Converter<String, MyType> {
    @Override
    public Currency convert(String text) {
        MyType object = new MyType();
        // do some more work here...
        return object;
    }
}

私のアプリケーションでは、 からStringへの変換を行うことができMyType、うまく機能します。

@Autowired
private ConversionService cs;

public void doIt() {
    MyType object = cs.convert("Value1", MyType.class);
}

しかし、たとえば、MVC コントローラー内で同じコンバーターを使用できることにも気付きました。リストでも何とか動作します。

@RequestMapping(method = RequestMethod.GET, value = "...")
@ResponseBody
public final String doIt(@RequestParam("param1") List<MyType> objects) throws Exception {
    // ....
}

したがってparam1=value1,value2、コントローラーで送信するList<MyType>と、2 つの要素を含む を受け取ります。そのため、Spring は文字列をコンマで分割し、各要素を個別に に変換しますMyType。これをプログラムでも行うことは可能ですか?

次のようなものが必要です。

List<MyType> objects = cs.convert("Value1,Value2", List<MyType>.class);
4

1 に答える 1

3

私は自分でかなり近い解決策を見つけました:

List<MyType> objects = Arrays.asList(cs.convert("Value1,Value2", MyType[].class));

Conversion Service が自動的にリストを作成してくれるともっと良いのですが、自分で作成するのに大きなオーバーヘッドはありませんArrays.asList()

于 2012-08-07T11:53:05.410 に答える