在 webfragments 中使用流

Using flows in webfragments

我正在尝试构建一个包含包含流的 webfragment 的 webapp。

我开始构建我想用作 webfragment 的 webapp 的独立版本。那行得通。之后我把它转换成这个结构:

flow-webfragment\src\main\java\javaclasses..

flow-webfragment\src\main\resources\META-INF\beans.xml
flow-webfragment\src\main\resources\META-INF\faces-config.xml
flow-webfragment\src\main\resources\META-INF\web-fragment.xml

flow-webfragment\src\main\resources\META-INF\resources\META-INF\context.xml
flow-webfragment\src\main\resources\META-INF\resources\META-INF\myflowdir
flow-webfragment\src\main\resources\META-INF\resources\META-INF\webfragment-start.xhtml

我不确定结构..如果有更好的或者约定请告诉我。

webfragment 设置正确,我的 webapp 可以识别它。我可以转到 "webfragment-start.xhtml" 页面,但是当我尝试进入流程时,出现 NullPointerException:

java.lang.NullPointerException
at com.sun.faces.flow.FlowCDIContext.flowEntered(FlowCDIContext.java:332)
at com.sun.faces.flow.FlowHandlerImpl.pushFlow(FlowHandlerImpl.java:385)
at com.sun.faces.flow.FlowHandlerImpl.transition(FlowHandlerImpl.java:280)
at com.sun.faces.application.NavigationHandlerImpl.handleNavigation(NavigationHandlerImpl.java:239)
at com.sun.faces.application.NavigationHandlerImpl.handleNavigation(NavigationHandlerImpl.java:182)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:132)

我认为 CDI 不正确可用,因为在我也使用 JSF 2.2 和 Omnifaces 的另一个项目中,我收到此消息

org.omnifaces.ApplicationInitializer checkCDIAvailable

http://omnifaces.org/cdi/

我也遵循了 BalusC 在 how to install CDI in tomcat 上的说明,它可以作为独立的 webapp 使用,但不能作为 webfragment 使用。

我没有找到关于如何构建 webfragment 的良好且易于理解的教程。如果你知道,欢迎告诉我。

非常感谢您的帮助!

亲切的问候, 米莎

我刚刚忘记添加

<Context>
<Resource name="BeanManager" 
    auth="Container"
    type="javax.enterprise.inject.spi.BeanManager"
    factory="org.jboss.weld.resources.ManagerObjectFactory" />
</Context>

到context.xml。