Jsf 流向起始页的流范围导航不起作用
这与其说是一个问题,不如说是一个注释。 对于Glassfish4,在JEE7应用程序中,我尝试使用编程流定义(用@products@FlowDefinition注释的java类)使用流范围 我使用一个h:commandButton导航到流的起始页(正如在JEE7教程示例中所做的那样)。 当我按下按钮时,它停留在同一页上,按钮所在的位置,而不是进入流的起始页 在经历了几个小时的痛苦之后,我意识到问题出在beans.xml中,在我的beans.xml中,我有这样一个问题: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
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”
如果这是一个期望的行为,那么有一个开放的讨论空间