在等待FlashScope被集成到Spring 3.1中时(无论如何它已经安排在这个版本中),我遇到了this bug posting,它允许我在3.1出现后合并一个松散版本的应用程序。< / p>
我的问题是我似乎无法绑定Flash Scope中的值。因此,例如在我的模型中,我有以下代码:
ModelAndView mav = new ModelAndView(someInjectedRedirectPage);
//Processing
mav.addObject("flashScope.someVar", someObject);
在我的UI中,使用Velocity,我尝试以下列方式绑定到此对象:
##This is a velocimacro for those not familiar with velocity.
##It is basically like setting a path on a field utilizing the
##spring tag lib (e.x. <form:text path="flashScope")
#springBind("flashScope")
但是当我尝试使用该绑定时,我得到以下异常:
java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'flashScope' available as request attribute
at org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:141)
at org.springframework.web.servlet.support.RequestContext.getBindStatus(RequestContext.java:720)bean name 'flashScope' available as request attribute...
但是在我的日志中,我可以清楚地说明它已被添加到请求中。我也可以做以下事情:
$flashScope.someVar.someProperty #The value prints fine this way.
无论如何都要绑定到Map值(不在备份命令对象上,而只是在请求上)?
请注意,请执行以下操作:
Map<String, String> map = new HashMap <String, String>();
map.put("key", "value");
mav.addObject("map", map);
我仍然无法绑定到地图......
我可以通过扩展WebBindingInitializer来修改这种行为吗?将FlashScopeMap简单地包装到另一个对象中可以解决问题吗?
答案 0 :(得分:0)
包装到另一个对象是我能够解决此问题的唯一方法。