我想将Map<String, String[]>
的用户输入转换为Java中的对象。更具体地说,我想将HttpServletRequest的参数转换为任意域对象的字段。
我想要这样的事情:
Domain d = Converter.convert(params, new Domain());
如果字符串数组中有多个元素,即映射条目的值,则应将其转换为列表或数组。也许应考虑日期和货币转换的区域设置。转换错误列表会很好。
是否有带这种转换器的库?
你会称它为“转换器”吗?我认为它通常被称为“数据绑定”,但这是我的选择中的错误术语,因为它与将模型值绑定到GUI元素有关,这是一个稍微不同的东西 - 不是吗?
答案 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)
并使用给定值调用它。