2011-06-15 337 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中使用。

相關問題