将对象从视图传递到控制器或将控制器传递到控制器

问题描述

| 我对spring mvc有疑问。 是否可以将对象从视图传递到控制器或从控制器传递到控制器? 我有一个称为人员的类(它由人员名称,年龄,地址组成)。 我尝试过类似的方法,但这不起作用。 首先,我将对象从控制器传递到这样的视图
model.addAttribute(\"person\",person);
return \"table\";
在table.jsp文件中,我做了一个链接
< a href=\"validate.html?person=${person}\" >validate< /a >
在验证控制器上,我做了这样的事情
 @RequestMapping(value=\"/validate\",method = RequestMethod.GET)
public String validate(@RequestParam(\"person\")Person person,Model model){
    model.addAttribute(\"message\",person.getName);
            return \"validate\";
}
可能吗?如果是,那怎么办?     

解决方法

        您无法以这种方式执行此操作。如果您使用的是Spring 3.1.x,则只需执行以下操作: 验证 然后在您的控制器中,您具有:
public String validate(Person person) {
   return \"validate\";
}
更好的方法是填充Session而不是Model。会话包含可序列化的对象:) 有关新闻Spring MVC功能的更多信息,请参见此处:http://blog.springsource.com/2011/06/13/spring-3-1-m2-spring-mvc-enhancements-2/     ,        您完全可以使用Converter SPI以所需的方式进行操作。您实现了Converter接口,该链接在spring文档中的链接如下所示:
package org.springframework.core.convert.converter;

public interface Converter<S,T> {
    T convert(S source);
}
从String到Person,另一个从Person到String。所以您的实现将是这样的
public class PersonToStringConverter<Person,String> {
    String convert( Person person ) {
        // some code here that serializes your Person object 
        // into a String that you can later parse back into a person.
        return mySerializedPerson;
    }
}
然后是StringToPersonConverter的实现,该实现将进行解析并填充并返回一个Person对象。然后按照Spring文档中的说明配置转换器以供使用,您就可以开始使用。 鉴于以上用法,您需要对序列化人员进行url编码,以便在\'a \'标签的href中使用。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...