2012-02-23 43 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