Java 使用不同的操作实现重用SpringWebflow定义
我得到了相当大的webflow定义,我不想为了重用而复制/粘贴它。XML中有对ActionBean的引用,这很自然 我想两次使用相同的流定义:第二次使用不同配置的操作(向其中注入不同的服务实现) 有没有简单的方法可以做到这一点Java 使用不同的操作实现重用SpringWebflow定义,java,spring,spring-webflow,Java,Spring,Spring Webflow,我得到了相当大的webflow定义,我不想为了重用而复制/粘贴它。XML中有对ActionBean的引用,这很自然 我想两次使用相同的流定义:第二次使用不同配置的操作(向其中注入不同的服务实现) 有没有简单的方法可以做到这一点 问题是,我想在同一个应用程序中同时对不同的bean使用相同的流。复制/粘贴不好,但我现在还没有看到其他解决方案。我认为您不能使用相同的webflow定义,以两种不同的方式配置操作 如果你想使用不同的操作,你要么重新配置你的操作bean,然后重新部署你的应用,要么用不同配
问题是,我想在同一个应用程序中同时对不同的bean使用相同的流。复制/粘贴不好,但我现在还没有看到其他解决方案。我认为您不能使用相同的webflow定义,以两种不同的方式配置操作 如果你想使用不同的操作,你要么重新配置你的操作bean,然后重新部署你的应用,要么用不同配置的bean创建一个单独的webflow定义
是一个很棒的Spring WebFlow资源。我不认为您可以使用相同的WebFlow定义,以两种不同的方式配置操作 如果你想使用不同的操作,你要么重新配置你的操作bean,然后重新部署你的应用,要么用不同配置的bean创建一个单独的webflow定义
是一个很棒的Spring WebFlow资源。您可以尝试创建一个新的流,扩展“相当大的流”,并向其中添加flowExecutionListeners 接口“FlowExecutionListener”为流执行中的以下事件定义方法:
- 请求提交
- 请求处理
- 会话创建
- 会议开始
- 会议开始
- 事件信号
- 过渡执行
- 国家进入
- 视图渲染
- 视图渲染
- 州政府
- 停顿
- 恢复
- 会话
- 会期
- 例外Rown
请注意,在这种情况下,您仍然需要修改“相当大的流”以使用这些资源,而不是直接引用bean。您可以尝试创建一个新的流来扩展“相当大的流”,并向其中添加flowExecutionListeners 接口“FlowExecutionListener”为流执行中的以下事件定义方法:
- 请求提交
- 请求处理
- 会话创建
- 会议开始
- 会议开始
- 事件信号
- 过渡执行
- 国家进入
- 视图渲染
- 视图渲染
- 州政府
- 停顿
- 恢复
- 会话
- 会期
- 例外Rown
请注意,在这种情况下,您仍然需要修改“相当大的流”来使用这些资源,而不是直接引用bean。我的问题与您的问题相同……我有不同的子类,它们有相应的操作bean,但很多流都是相同的。在过去,我们只是复制和粘贴…不高兴! 我有一些想法,我将尝试使用表达式语言。首先,我提出了一个ActionBean工厂,它将返回用于给定类的正确的ActionBean,然后我可以调用该工厂来设置一个变量,我可以使用它来代替硬编码的bean名称 以下是流程的一部分:
<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"/>
最后一行中的evaluate通常直接引用bean,但现在它引用了我刚才所做的“set”的结果
好消息——正确的豆子会被调用
坏消息——流范围中的任何内容都需要可序列化,因此我得到一个NotSerializableException——argh
我可以尝试在一个非常短暂的作用域上设置一些东西,在这种情况下,它需要一直被调用……或者我可以找到某种代理,将真实bean作为声明为“暂时”的代理保存
顺便说一句,我使用的是Spring2.5.6和WebFlow2.0.7。以后的版本可能有更好的处理方法;特别是EL's似乎得到了一些关注。我仍然坚持使用OGNL,它是Spring 1.x EL
我相信一些webflow大师知道以一种不那么笨重的方式做事情的其他方法…我与您处于相同的修复中…我有不同的子类,它们有相应的动作bean,但很多流都是相同的。在过去,我们只是复制和粘贴…不高兴! 我有一些想法,我将尝试使用表达式语言。首先,我提出了一个ActionBean工厂,它将返回用于给定类的正确的ActionBean,然后我可以调用该工厂来设置一个变量,我可以使用它来代替硬编码的bean名称 以下是流程的一部分:
<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"/>
最后一行中的evaluate通常直接引用bean,但现在它引用了我刚才所做的“set”的结果
好消息——正确的豆子会被调用
坏消息——流范围中的任何内容都需要可序列化,因此我得到一个NotSerializableException——argh
我可以尝试在一个非常短暂的作用域上设置一些东西,在这种情况下,它需要一直被调用……或者我可以找到某种代理,将真实bean作为声明为“暂时”的代理保存
顺便说一句,我使用的是Spring2.5.6和WebFlow2.0.7。以后的版本可能有更好的处理方法;特别是EL's似乎得到了一些关注。我仍然坚持使用OGNL,它是Spring 1.x EL
我相信一些webflow大师知道用更少的时间做事情的其他方法