我有一个关于带有 JSF 的 Spring Web Flow 的问题:如何教 Spring Web Flow 能够从 tomcat webapp 的类路径中的 jar加载相对视图,如view="pages/view.xhtml" ?经过谷歌的一些研究,我认为 Web Flow 不支持开箱即用的这个星座。
也许一些上下文,以帮助理解我的问题: - 流在多个 FlowRegistries 中注册(我通过实现自定义实现解决了这个问题,它在 Spring 上下文中找到所有 flowRegistries) - 流可以作为文件资源驻留在类路径之外或内部类路径中的 jar,即文件资源流位于WEB-INF/conf中的某个位置,并且它们在 jar 文件中的相同位置。- 流定义中的视图相对于流定义文件进行寻址
现在你可能会问为什么我们有两个星座,流动可以驻留的地方。目前,我们正试图从一大堆包含属于某个域的所有功能的 webapp 模块中提取。该方法是将所有相关的工件捆绑在一个项目中,该项目可以构建为 jar,然后添加到 webapp。
虽然在不知道我们的配置文件位置的情况下为每个 jar 加载 Spring bean 是没有问题的,但 Web Flow 会导致一些问题。
第一个问题是,flowRegistry 是一个整体,如果不事先做某事就无法拆分。这个问题是通过自定义流注册表解决的。
但现在我遇到了第二个问题:在视图状态中,我们引用相对于流定义的页面,如文档中所述:
<view-state id="some-id" view="pages/somepage.xhtml"> ... </view-state>
现在,当我进入这样的视图状态时,web flow 会抛出异常,告诉我不支持这种方式:
A ContextResource is required to get relative view paths within this context;
the resource was ...
谷歌搜索提出了这个可能的解决方案: jars webflows 的解决方法
但是这种解决方法不起作用,因为我的多个流注册表存在问题。
另一种选择可能是不把所有东西都放进罐子里,但我不确定这是否是一个更好的主意。可能有所有可以从 jar 中的类路径加载的东西,其余的都是定义结构中的纯文件。
有任何想法吗?非常感谢您的努力和提示。