我对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 :(得分: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中使用。