Я в том же исправлении, в котором вы находитесь ... У меня есть разные подклассы, у которых есть соответствующие бины действия, но большая часть потока одинакова. В прошлом мы только что скопировали и вставили ... не доволен этим!
У меня есть некоторые идеи, которые я собираюсь попробовать с использованием языка выражений. Во-первых, я придумал фабрику компонентов действия, которая будет возвращать правильный компонент действия для использования в данном классе, затем я могу вызвать эту фабрику, чтобы установить переменную, которую я могу использовать вместо жестко заданного имени компонента.
Вот часть потока:
<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"/>
Оценка в последней строке обычно относится непосредственно к бобу, но теперь она относится к результату "сета", который я только что сделал.
Хорошие новости - вызывается правильный боб.
Плохие новости - все в области потока должно быть Serializable, поэтому я получаю NotSerializableException - arggh!
Я могу попробовать установить что-то на очень недолгую область, и в этом случае ему нужно будет постоянно вызываться ... или я могу найти какой-то прокси, который содержит настоящий бин как объявленный прокси " переходная».
Кстати, я использую Spring 2.5.6 и webflow 2.0.7. Более поздние версии могут иметь лучшие способы справиться с этим; в частности, ЭЛ, кажется, привлекли некоторое внимание. Я все еще застрял с OGNL, который является Spring 1.x EL.
Я уверен, что некоторые гуру веб-потока знают другие способы сделать что-то менее неуклюжим образом ...