1

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

我想要这样的东西:

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

如果字符串数组中有多个元素,即映射条目的值,则应将其转换为列表或数组。也许应该考虑语言环境来进行日期和货币转换。并且转换错误列表会很好。

有没有带有这种转换器的库?

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

4

2 回答 2

1

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

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

于 2010-06-22T09:07:18.403 回答
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)并使用给定的值调用它。

于 2010-06-22T08:55:25.153 回答