1

我正在尝试构建一个 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

http://omnifaces.org/cdi/

我还按照 BalusC 关于如何在 tomcat 中安装 CDI的说明进行操作,它可以作为独立的 webapp,但不能作为 webfragment。

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

非常感谢您的每一次帮助!

亲切的问候,米莎

4

1 回答 1

0

我只是忘了添加

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

到 context.xml。

于 2015-05-06T07:27:53.637 回答