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

我想要这样的东西:

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

如果字符串数组中有多个元素(即映射条目的值),则应将其转换为列表或数组。也许应该考虑区域设置来进行日期和货币转换。如果能列出转换错误的列表就更好了。

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

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

有帮助吗?

解决方案

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

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

其他提示

不要使用这个纯代码,因为它只是一个示例。您应该添加一些漂亮的异常处理和一个通过映射的循环。但一般的想法是这样的:

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);
    }
}

这段代码,给定了参数名称 '姓名' 会尝试寻找方法 setName(String name) 并用给定的值调用它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top