我正在尝试构建一个 webapp,其中包含一个包含流的 webfragment。
我开始构建我想用作 web 片段的 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
我还按照 BalusC 关于如何在 tomcat 中安装 CDI的说明进行操作,它可以作为独立的 webapp,但不能作为 webfragment。
我没有找到关于如何构建 webfragment 的良好且易于理解的教程。如果你知道一个,欢迎你告诉我。
非常感谢您的每一次帮助!
亲切的问候,米莎