Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.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
Java 退出JSF流_Java_Jsf_Jsf 2.2_Flow Scope_Faces Flow - Fatal编程技术网

Java 退出JSF流

Java 退出JSF流,java,jsf,jsf-2.2,flow-scope,faces-flow,Java,Jsf,Jsf 2.2,Flow Scope,Faces Flow,我开始使用JSF流,在阅读了一些示例和规范之后,我开始使用它 我正在使用目录中的打包流方法,如本手册第11.4.3.3节所述。这似乎更容易,更符合自JSF2.0以来已经采用的命名约定 下面是我当前的目录结构。流id是向导 我理解通过调用返回节点退出流的概念 从上图可以看出,我没有返回节点视图。它只是一个向导,有一堆可以来回导航的页面,优点是我的ManagedBean状态保持不变 问题是,我可以导航到应用程序中的任何页面,JSF仍然保持该流的状态。如果我回到任何一个向导页面,所有的信息仍然在那里

我开始使用JSF流,在阅读了一些示例和规范之后,我开始使用它

我正在使用目录中的打包流方法,如本手册第11.4.3.3节所述。这似乎更容易,更符合自JSF2.0以来已经采用的命名约定

下面是我当前的目录结构。流id是向导

我理解通过调用返回节点退出流的概念

从上图可以看出,我没有返回节点视图。它只是一个向导,有一堆可以来回导航的页面,优点是我的ManagedBean状态保持不变

问题是,我可以导航到应用程序中的任何页面,JSF仍然保持该流的状态。如果我回到任何一个向导页面,所有的信息仍然在那里,这意味着JSF从未放弃过流作用域

我的问题是:

  • 如果我有一个“finish”命令按钮,我如何告诉JSF当用户单击该按钮时,它应该删除当前的流范围
  • 更重要的是,如果我没有返回节点怎么办?如果用户导航到流目录之外的任何视图*,我如何告诉JSF放弃流状态?(根据“流”的概念,我认为这已经是标准行为)
  • *我只是想说清楚,我指的是另一个JSF视图(我的应用程序中的另一个页面)。我知道,如果用户触发对我的应用程序或JSF范围之外的页面的请求,它将无能为力

    如果用户导航到任何位置,我如何告诉JSF放弃流状态 是否在流目录之外查看

    JSF无法知道您只是重定向到说“”。bean将驻留在内存中,直到实现决定由于未使用而将其删除。我有一个类似的问题,我现在能想到的就是使用一些JS处理程序,它会在后端触发一些逻辑来结束流。在一般情况下,如果您的浏览器崩溃而无法执行此JS代码,则无法解决此问题

    如果我有一个“finish”命令按钮,那么当 用户单击该按钮,是否应删除当前流范围

    您必须定义所谓的返回节点(-s)。我将为您提供一个成功结束流程的配置示例:

    <?xml version="1.0"?>
    <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/web-facesconfig_2_2.xsd">
     <application/>
    
     <flow-definition id="myflow">
        <view id="Page1">
            <vdl-document>/myflow/Page1.xhtml</vdl-document>
        </view>
    
        <start-node>Page1</start-node>
    
        <flow-return id="exit">
            <from-outcome>/home.xhtml</from-outcome>
        </flow-return>
    </flow-definition>
    
    </faces-config>
    
    
    /myflow/Page1.xhtml
    第1页
    /home.xhtml
    
    您必须确保命令按钮在操作属性中返回“退出”。例如:

    <p:commandButton value="Finish Flow" action="exit"/>
    
    
    
    在流中,每当您通过“action”属性重定向到某个新页面时,请确保将“faces redirect=true”附加到URL,否则,至少在我的情况下,会出现“No active context”错误。例如,像这样:

    <p:commandButton value="Next Page" action="Page2.xhtml?faces-redirect=true"/>
    
    
    
    如果用户导航到任何位置,我如何告诉JSF放弃流状态 是否在流目录之外查看

    JSF无法知道您只是重定向到说“”。bean将驻留在内存中,直到实现决定由于未使用而将其删除。我有一个类似的问题,我现在能想到的就是使用一些JS处理程序,它会在后端触发一些逻辑来结束流。在一般情况下,如果您的浏览器崩溃而无法执行此JS代码,则无法解决此问题

    如果我有一个“finish”命令按钮,那么当 用户单击该按钮,是否应删除当前流范围

    您必须定义所谓的返回节点(-s)。我将为您提供一个成功结束流程的配置示例:

    <?xml version="1.0"?>
    <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/web-facesconfig_2_2.xsd">
     <application/>
    
     <flow-definition id="myflow">
        <view id="Page1">
            <vdl-document>/myflow/Page1.xhtml</vdl-document>
        </view>
    
        <start-node>Page1</start-node>
    
        <flow-return id="exit">
            <from-outcome>/home.xhtml</from-outcome>
        </flow-return>
    </flow-definition>
    
    </faces-config>
    
    
    /myflow/Page1.xhtml
    第1页
    /home.xhtml
    
    您必须确保命令按钮在操作属性中返回“退出”。例如:

    <p:commandButton value="Finish Flow" action="exit"/>
    
    
    
    在流中,每当您通过“action”属性重定向到某个新页面时,请确保将“faces redirect=true”附加到URL,否则,至少在我的情况下,会出现“No active context”错误。例如,像这样:

    <p:commandButton value="Next Page" action="Page2.xhtml?faces-redirect=true"/>
    
    
    
    在您回答的第一个问题中,我的意思是,当用户导航到另一个视图时,我希望JSF删除流状态,我的意思是JSF范围内的视图,该视图将由Faces Servlet提供服务,而不是我的应用程序之外的某个URL(如您的示例)。JSF确实知道用户需要什么视图,以及他/她来自何处,所以我认为仍然有一种方法可以做到这一点(可能是通过编程实现的?使用阶段侦听器?idk,这是我的问题)。更新了我的问题。至于你回答的第二个问题,就是它,谢谢。在你回答的第一个问题中,我的意思是当用户导航到另一个视图时,我希望JSF删除流状态,我的意思是JSF范围内的视图,它将由Faces Servlet提供服务,不是我的应用程序之外的某个URL(例如你的)。JSF确实知道用户需要什么视图,以及他/她来自何处,所以我认为仍然有一种方法可以做到这一点(可能是通过编程实现的?使用阶段侦听器?idk,这是我的问题)。更新了我的问题。至于你回答的第二个问题,就是这个,谢谢。