java - 无需 Spring MVC 的自动数据绑定(bind) Java 对象

标签 java data-binding spring-mvc

我正在开发一个Java Web项目,并没有对其应用Spring MVC、Spring web-flow(因为它非常简单)。将 HTTP 请求的值附加到 Java 对象时遇到一个小问题。是否有任何独立的库或实用程序支持我们在不使用 Spring 的情况下自动将客户端请求的数据绑定(bind)到服务器对象(通过属性名称匹配)?假设客户端请求中的参数已经构建到 map 中。
当我使用 Grails(Groovy 的 Web 框架)时,它有一种非常出色的方法可以使用以下方法将请求参数中的数据填充到对象中:object.properties=parameters,但我不知道在Java,我们有类似的机制来实现吗?
非常感谢。

最佳答案

Apache Commons 可能会提供帮助 BeanUtilsBean 。它有一些很酷的方法,例如 getProperty()setProperty(),如果您想尝试使用反射手动编码,这可能会有所帮助。还有 populate(Object bean, Map properties) 方法,我相信它最接近您想要的。

Dozer是一个专门用于将内容从一种结构映射到另一种结构的java库。这可能会有所帮助。

This guy在 coderanch 上发布了类似的问题,经过一番讨论,他得出了以下结论:

public static <T extends Object> T setFromMap(Class<T> beanClazz, HashMap<String, String> propValues) throws Exception  
{  
    T bean = (T) beanClazz.newInstance();  
    Object obj = new Object();  
    PropertyDescriptor[] pdescriptors = null;  
    BeanInfo beanInfo = Introspector.getBeanInfo(beanClazz);  
    pdescriptors = beanInfo.getPropertyDescriptors();  
    for(int i=0; i<pdescriptors.length; i++)  
    {  
        String descriptorName = pdescriptors[i].getName();  
        if(!(descriptorName.equals("class")))  
        {  
            String propName = descriptorName;  
            String value = (String) propValues.get(propName);  
            if(value != null)  
            {  
                Object[] objArray = new Object[1];  
                objArray[0] = value;  
                Method writeMethod = pdescriptors[i].getWriteMethod();  
                writeMethod.invoke(bean, objArray);  
            }  
        }  
    }
    return bean;
}

关于java - 无需 Spring MVC 的自动数据绑定(bind) Java 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13220405/

相关文章:

java - 如何动态更改 weblogic.xml 中的值?

java - 在 TestNG 和 Gradle 中包含(不排除)组

.net - WPF ComboBox 的自定义相等比较器

wpf - 依赖属性和数据绑定(bind)?

spring-boot - 使用Spring Data JPA规范获取投影接口(interface)

java - 为什么我的 Spring Boot Controller 不自动连接 validator ?

java - 二 fork 树的最左节点和最右节点是什么?

java - 使用 Javax.comm 重新枚举 java 中的所有串行设备

forms - 如何为复杂的 React 表单实现数据绑定(bind)

java - 如果您在 View 上使用 JSTL,Spring MVC 会给您带来什么?