Я собираюсь сохранить свой идентификатор объекта в сессию в одном из состояний действий:Session, внутр и Типы объектов в Spring Web Flow
<on-exit>
<evaluate expression="persistantService.saveOrUpdate(flowScope.entity)"/>
<evaluate expression="externalContext.sessionMap.put('entityId', flowScope.entity.Id)"/>
</on-exit>
На самом деле, entity.Id поле - это внутр.
В начале потока я пытаюсь получить entityId из сеанса, если он существует, загрузите его из хранилища, иначе - создайте новый. Вот как я полагаю, чтобы сделать это:
<decision-state id="test">
<if test="externalContext.sessionMap.contains('entityId')"
then="findExistingEntity"
else="creteNewEntity"/>
</decision-state>
<action-state id="findExistingEntity">
<evaluate expression="persistantService.findEntityById(externalContext.sessionMap.entityId)"
result="flowScope.entity" />
</action-state>
Проблема заключается в том, что persistantService.findEntityById принимает INT, но не объект или Integer, которые взяты из сессии. Как это можно решить? Как преобразовать externalContext.sessionMap.entityId в int? Или, возможно, есть другой способ, чтобы проверить, что объект сохранен и загрузить его из стойкого хранилища?
Почему вы работаете с sessionmap? я бы использовал диалог. Я действительно не уверен, работает ли этот файл sessionmap в потоке xml –