2011-06-15 344 views
2

我有关于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"; 
} 

这可能吗?如果是,那么如何?

+0

像这样思考 - 一个Person对象怎么能在URL中传递?一个URL只是一个字符串。 – 2011-06-15 14:53:01

回答

3

你不能这样做。如果你使用Spring 3.1.x,你只需要做: < a href =“validate.html?name = $ {person.name} & age = $ {person.age} ...”>验证< /一>

,然后在你的控制器,你必须:

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

一个更好的办法将是填充会话,而不是模型。会话包含序列化对象:)

这里了解新闻的Spring MVC功能的详细信息:http://blog.springsource.com/2011/06/13/spring-3-1-m2-spring-mvc-enhancements-2/

0

你可以完全做到这一点在你想使用Converter SPI的方式。您实现了Converter接口,该接口从链接中的弹簧文档中看起来像这样:

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中使用。

相关问题