2012-02-23 44 views
0

我有一個像這樣的Portlet控制器。在這裏,我將一個變量綁定到Session。之後,它重定向到另一個控制器並呈現jsp。spring mvc @SessionAttributes沒有正確綁定

@SessionAttributes({"attrName"}) 
public class Controller{ 
public void manage(ModelMap modelMap) { 
modelMap.addAttribute("attrName", true) 
response.sendRedirect(URL_CONTROLLER_2); 
} 
} 

因此,這將重定向到另一個呈現jsp的控制器。 在jsp中,當我這樣做時:

alert("${attrName}") 

我得到空。 爲什麼我無法看到該屬性。 即使當我調試並檢查控制器#2中的ModelMap時,屬性「attrName」在會話中不存在。

回答

0

AFAIK這是一個預期的行爲,因爲@SessionAttributes不在不同的控制器之間共享。一旦下一個控制器被調用,以這種方式保存的屬性將從會話中刪除。

+0

Thanks.but這些控制器共享相同的會話...所以屬性應該保持。只是猜測。 – Victor 2012-02-23 16:35:00

+0

您是否閱讀過這篇文章:http://claymitchell.net/2008/02/11/spring-framework-annotation-sessionattribute-can-be-confusing/ – Waqas 2012-02-23 16:39:54

+0

非常感謝Waqas。這是一個偉大的指針。 – Victor 2012-02-23 16:42:13