自动将字符串转换为Java对象

时间:2010-06-22 08:40:47

标签: java data-binding data-conversion

我想将Map<String, String[]>的用户输入转换为Java中的对象。更具体地说,我想将HttpServletRequest的参数转换为任意域对象的字段。

我想要这样的事情:

Domain d = Converter.convert(params, new Domain());

如果字符串数组中有多个元素,即映射条目的值,则应将其转换为列表或数组。也许应考虑日期和货币转换的区域设置。转换错误列表会很好。

是否有带这种转换器的库?

你会称它为“转换器”吗?我认为它通常被称为“数据绑定”,但这是我的选择中的错误术语,因为它与将模型值绑定到GUI元素有关,这是一个稍微不同的东西 - 不是吗?

2 个答案:

答案 0 :(得分:1)

如果您的Web框架不支持此功能,请查看
http://commons.apache.org/beanutils/,特别是beanutils包,它具有你想要的类似目的(可能完全相同)的类。

您也可以考虑转换到更成熟的框架; - )

答案 1 :(得分:0)

不要使用这个普通代码,因为它只是一个例子。您应该添加一些非常好的异常处理和循环遍历地图。但通常这个想法是这样的:

void putValue(String name, String value, Object object) throws Exception {
    String setterName = "set"+name.substring(0,1).toUpperCase()+name.substring(1);
    Method m = object.getClass().getMethod(setterName, String.class);
    if (m!=null) {
        m.invoke(object, value);
    }
}

如果参数名称'name',此代码将尝试查找方法setName(String name)并使用给定值调用它。