Как вы знаете, SWF использует POST-REDIRECT-GET
для отображения представлений, давайте проведем простой тест, чтобы увидеть, как работают действия. Измените свою конфигурацию на что-то вроде -
<view-state id="bstate" model="foo">
<on-entry>
<evaluate expression="myBean.OnEntry()"></evaluate>
</on-entry>
<on-render>
<evaluate expression="myBean.OnRender()"></evaluate>
</on-render>
</view-state>
И получить доступ к потоку и заметить журналы
19:08:07.805 [tomcat-http--35] DEBUG o.s.webflow.execution.ActionExecutor - Executing [EvaluateAction@31865599 expression = myBean.onEntry(), resultExpression = [null]]
19:08:07.809 [tomcat-http--35] DEBUG o.s.w.mvc.servlet.FlowHandlerAdapter - Sending flow execution redirect to '/webflow-actions-test/mypath?execution=e3s1'
19:08:07.841 [tomcat-http--36] DEBUG o.s.webflow.execution.ActionExecutor - Finished executing [EvaluateAction@7584e5f9 expression = myBean.onRender(), resultExpression = [null]]; result = success
Как видите, сначала выполняется onEntry()
, затем происходит перенаправление, а затем вызывается onRender()
. Поскольку это два разных запроса, вы не можете получить доступ к переменной с областью запроса от одного запроса к другому.
Итак, как упомянул Прасад, вы можете перенести свою логику на рендеринг
<on-render>
<evaluate expression="service.createPerson(22,'Adam', 'Hayek')"
result="requestScope.person"></evaluate>
</on-render>
и получить доступ к нему в вашем JSP
или вы можете изменить свою область действия на flashScope
[ПРИМЕЧАНИЕ. Это очищается каждый раз, когда представление отображается. Это означает, что он переживет первоначальное перенаправление, но будет недоступен, если вы снова обновите страницу] или вы можете использовать viewScope
[переменная будет доступна в вашем состоянии просмотра]. если вам нужны переменные в разных состояниях, вы можете использовать viewScope
.
Подробнее об областях — http://docs.spring.io/autorepo/docs/webflow/2.3.x/reference/html/el.html#el-variables
Также интересная ветка - http://forum.spring.io/forum/spring-projects/web/web-flow/68756-what-is-the-use-of-request-scope-and-flash-scope
person
Aniket Thakur
schedule
17.01.2016