春季转换服务:如何将字符串转换为列表 ?(Spring Conversion Service:

2019-07-30 19:39发布

我使用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;
    }
}

现在,在我的应用程序可以从做转换StringMyType ,而且运作良好:

@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>在它的两个元素。 所以弹簧不会分裂由逗号字符串,然后将每个元件分别转换成MyType 。 是否有可能做到这一点编程呢?

我需要类似这样的:

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

Answer 1:

我发现自己很接近的解决方案:

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

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



文章来源: Spring Conversion Service: how to convert String to List?