无Spring MVC的自动数据绑定Java对象

无Spring MVC的自动数据绑定Java对象,java,data-binding,spring-mvc,Java,Data Binding,Spring Mvc,我正在开发一个JavaWeb项目,而不是将SpringMVC、SpringWebFlow应用于它(因为它非常简单)。我在将HTTP请求的值附加到Java对象时遇到了一个小问题。是否有任何独立的库或实用程序支持我们在不使用Spring的情况下将数据从客户端请求自动绑定到服务器对象(由属性名匹配)?假设客户端请求中的参数已生成映射。 当我使用Grails(Groovy的web框架)时,通过使用:object.properties=parameters,它有一种非常棒的方法来将请求参数中的数据填充到对

我正在开发一个JavaWeb项目,而不是将SpringMVC、SpringWebFlow应用于它(因为它非常简单)。我在将HTTP请求的值附加到Java对象时遇到了一个小问题。是否有任何独立的库或实用程序支持我们在不使用Spring的情况下将数据从客户端请求自动绑定到服务器对象(由属性名匹配)?假设客户端请求中的参数已生成映射。
当我使用Grails(Groovy的web框架)时,通过使用:
object.properties=parameters
,它有一种非常棒的方法来将请求参数中的数据填充到对象中,但我不知道在Java中,我们是否有类似的机制来实现它?

非常感谢您。

Apache Commons可能会对您有所帮助。它有一些很酷的方法,比如
getProperty()
setProperty()
,如果您想尝试使用反射手工编写代码,这些方法可能会有所帮助。还有
populate(对象bean,映射属性)
方法,我相信它最接近您想要的

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

在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;
}
publicstatict setFromMap(类beanClazz,HashMap propValues)引发异常
{  
T bean=(T)beanClazz.newInstance();
Object obj=新对象();
PropertyDescriptor[]pdescriptors=null;
BeanInfo BeanInfo=内省者.getBeanInfo(beanClazz);
pdescriptors=beanInfo.getPropertyDescriptors();

对于(int i=0;我不理解您不使用Spring的原因。在我看来,它正是您想要用于类似这样的东西的东西。