Spring FlashScope - PullRequest
       12

Spring FlashScope

1 голос
/ 17 марта 2011

В ожидании интеграции FlashScope в Spring 3.1 (в любом случае это запланировано на этот выпуск), я наткнулся на это сообщение об ошибке , которое позволило мне включить бесплатную версию того, что должно быть доступно один раз 3.1

Моя проблема в том, что я не могу привязать значения, которые есть во Flash Scope.Так, например, в моей модели у меня есть следующий код:

ModelAndView mav = new ModelAndView(someInjectedRedirectPage);
//Processing
mav.addObject("flashScope.someVar", someObject);

В моем пользовательском интерфейсе, используя 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 в другой объект?

1 Ответ

0 голосов
/ 25 апреля 2011

Обертывание в другой объект было единственным способом, которым я смог решить эту проблему.

...