Spring Conversion Service:如何将String转换为List <mytype>?</mytype>

时间:2012-08-06 09:52:59

标签: spring spring-mvc type-conversion spring-3

我正在使用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>,其中包含两个元素。所以spring会用逗号分割String,然后将每个元素分别转换为MyType。是否有可能以编程方式执行此操作?

我需要类似的东西:

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

1 个答案:

答案 0 :(得分:2)

我自己找到了非常接近的解决方案:

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

如果转换服务会自动创建列表会更好,但使用Arrays.asList()自行创建列表并不是一个很大的开销。