Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 流向起始页的流范围导航不起作用_Jsf_Cdi_Jsf 2.2_Flow Scope - Fatal编程技术网

Jsf 流向起始页的流范围导航不起作用

Jsf 流向起始页的流范围导航不起作用,jsf,cdi,jsf-2.2,flow-scope,Jsf,Cdi,Jsf 2.2,Flow Scope,这与其说是一个问题,不如说是一个注释。 对于Glassfish4,在JEE7应用程序中,我尝试使用编程流定义(用@products@FlowDefinition注释的java类)使用流范围 我使用一个h:commandButton导航到流的起始页(正如在JEE7教程示例中所做的那样)。 当我按下按钮时,它停留在同一页上,按钮所在的位置,而不是进入流的起始页 在经历了几个小时的痛苦之后,我意识到问题出在beans.xml中,在我的beans.xml中,我有这样一个问题: bean-discover

这与其说是一个问题,不如说是一个注释。 对于Glassfish4,在JEE7应用程序中,我尝试使用编程流定义(用@products@FlowDefinition注释的java类)使用流范围

我使用一个h:commandButton导航到流的起始页(正如在JEE7教程示例中所做的那样)。 当我按下按钮时,它停留在同一页上,按钮所在的位置,而不是进入流的起始页

在经历了几个小时的痛苦之后,我意识到问题出在beans.xml中,在我的beans.xml中,我有这样一个问题:

bean-discovery-mode="annotated"
根据文档(),这是推荐的设置。 当我把这个改成

bean-discovery-mode="all"
它开始起作用了

不知何故,CDI没有将流定义识别为带注释的类。我尝试将其设置为@Named类或@ApplicationScoped类,但这些都没有帮助。 我不知道这是故意的行为,还是一个bug

希望能为别人省下一些钱。

谢谢

当然,您总是可以回退到为视图使用XML声明,例如创建包含以下内容的文件
example/example flow.XML

<?xml version='1.0' encoding='UTF-8'?>
<faces-config version="2.2"
          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_2.xsd">
  <flow-definition id="example">
    <flow-return id="actionId" >
        <from-outcome>#{somebean.returnValue}</from-outcome>                
    </flow-return>
  </flow-definition>
</faces-config>

#{somebean.returnValue}

这与CDI如何检测bean存档有关。当
bean discovery mode=“annotated”
时,CDI只拾取带注释的类;请注意
@Named
@FlowScoped
不在该列表中

因此,正如您在这里所记录的,使用流注释需要设置
bean discovery mode=“all”

如果这是一个期望的行为,那么有一个开放的讨论空间