Я в том же исправлении, что и вы... у меня есть разные подклассы, у которых есть соответствующие компоненты действий, но большая часть потока одинакова. В прошлом мы просто копировали и вставляли... недовольны этим! У меня есть несколько идей, которые я собираюсь опробовать, используя язык выражений. Во-первых, я придумал фабрику компонентов действий, которая будет возвращать правильный компонент действий для использования в заданном классе, затем я могу вызвать эту фабрику, чтобы установить переменную, которую я могу использовать вместо жестко запрограммированного имени компонента.
Вот часть потока:
<action-state id="checkForParams">
<on-entry>
<set name="flowScope.clientKey" value="requestParameters.clientKey"/>
<set name="flowScope.viewReportBean"
value="reportActionFactory.getViewBean(reportUnit)"/>
</on-entry>
<evaluate expression="viewReportBean"/>
Вычисление в последней строке обычно ссылается непосредственно на bean-компонент, но теперь оно ссылается на результат "набора", который я только что сделал.
Хорошие новости - правый боб называется.
Плохая новость — все в области потока должно быть Serializable, поэтому я получаю исключение NotSerializableException — аааа!
Я могу попробовать установить что-то в очень краткосрочной области действия, и в этом случае его нужно будет вызывать все время... или я могу выяснить какой-то прокси-сервер, который содержит настоящий bean-компонент как прокси-сервер, объявленный "переходным".
Кстати, я использую Spring 2.5.6 и webflow 2.0.7. В более поздних версиях могут быть лучшие способы справиться с этим; в частности, кажется, что EL привлекли некоторое внимание. Я все еще застрял с OGNL, который является Spring 1.x EL.
Я уверен, что какой-нибудь гуру веб-потока знает другие способы сделать что-то менее неуклюжим...
person
bobtins
schedule
30.10.2010