2013-04-21 89 views
0

內對象的類型,我要我的實體ID保存到會話中的動作狀態之一:Session變量,INT和Spring Web Flow

<on-exit> 
<evaluate expression="persistantService.saveOrUpdate(flowScope.entity)"/> 
<evaluate expression="externalContext.sessionMap.put('entityId', flowScope.entity.Id)"/> 
</on-exit> 

其實,entity.Id場 - 爲int。

在流程的開始,我試圖從會話中獲取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接受整型,而不是對象或從會議上作出整數。 我該如何解決它?如何將externalContext.sessionMap.entityId轉換爲int? 或者還有另外一種方法來測試實體是否被保存並從持久存儲中加載它?

+0

你爲什麼用sessionmap工作?我會使用conversationscope。我實際上不確定這個會話映射的東西是否在流xml中工作 – 2013-04-29 13:37:16

回答

0

我會使用conversationScope

<on-exit> 
    <evaluate expression="persistantService.saveOrUpdate(flowScope.entity)"/> 
    <set name="conversationScope.entityId" value="flowScope.entity.Id"/> 
</on-exit> 

...

<decision-state id="test"> 
    <if test="conversationScope.entityId != null" 
    <!-- i'm not sure if that works you might put the test in a method in a bean and call that--!> 
     then="findExistingEntity" 
     else="creteNewEntity"/> 
</decision-state> 

<action-state id="findExistingEntity"> 
    <evaluate expression="persistantService.findEntityById(conversationScope.entityId)" 
     result="flowScope.entity" /> 
</action-state>