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

时间:2011-06-15 12:09:11

标签: java spring spring-mvc

我对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";
}

有可能吗?如果是,那怎么样?

2 个答案:

答案 0 :(得分:3)

你不能这样做。如果您使用的是Spring 3.1.x,则只需执行以下操作: &LT; a href =“validate.html?name = $ {person.name}&amp; age = $ {person.age} ...”&gt; validate&lt; / a&gt;

然后在你的控制器中,你有:

public String validate(Person person) {
   return "validate";
}

更好的方法是填充Session而不是Model。 Session包含可序列化的对象:)

这里有关于Spring MVC新闻的更多信息:http://blog.springsource.com/2011/06/13/spring-3-1-m2-spring-mvc-enhancements-2/

答案 1 :(得分:0)

您绝对可以使用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文档中的说明配置转换器以供使用,您就可以开始使用了。

根据您的上述用法,您需要对序列化人员进行网址编码,以便在“a”标记的href中使用。