JSF面对流程抛出错误“流程已存在”

时间:2019-08-21 20:13:49

标签: jsf jsf-2.3 faces-flow

我的环境:

JSF 2.3,Mojarra 2.3.9.payara-p2

PrimeFaces 7.0

Payara 5.192

OmniFaces 3.3

Project Java EE 8 Maven

NetBeans 11.1

我创建了一个Faces流:

“ flotTransfer”文件夹(目前仅包含2个文件)flotTransfert-flow.xml和flotTransfert.xhtml。

我无法部署该应用程序。我收到此消息: ” 加载应用程序时发生异常:java.lang.IllegalStateException:ContainerBase.addChild:开始:org.apache.catalina.LifecycleException:java.lang.RuntimeException:java.lang.IllegalStateException:ID为“ flotTransfert”和defineDocumentDocumentId为“”的流已存在。|#] “。

我不明白为什么会收到此错误(为什么“已经存在”?)。服务器上未部署其他应用程序。

flotTransfert-flow.xml的内容:

<faces-config version="2.3"
              xmlns="http://xmlns.jcp.org/xml/ns/javaee"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_3.xsd">
  <flow-definition id="flotTransfert">
    <flow-return id="sortieFlot">
      <from-outcome>/listeComptes</from-outcome>
    </flow-return> 
  </flow-definition>
</faces-config>

如果我重命名此文件,就不会再有错误,并且应用程序已部署在服务器上,但是很明显,人脸流程不起作用。

如果我保留文件但删除文件的所有内容(我注释掉了所有行),则会收到相同的错误。

在另一个应用程序中,我具有几乎相同的人脸流程(文件夹中只有更多页面),但是使用Java EE 7和Payara 5.184,并且没有OmniFaces,该流程有效。

1 个答案:

答案 0 :(得分:1)

对不起,我犯了一个错误:我使用IDE的向导添加了文件flotTransfert-flow.xml,但我没有注意到该向导在文件web.xml中添加了<context-param>,引用了流的定义文件。如果我删除此<context-param>,则一切正常。

我从web.xml中删除的行:

<context-param>
    <param-name>javax.faces.CONFIG_FILES</param-name>
    <param-value>/flotTransfert/flotTransfert-flow.xml</param-value>
</context-param>