繁体   English   中英

退出JSF流

[英]Exiting a JSF Flow

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

我正在使用目录中打包流程方法,如规范的 11.4.3.3节中所述。 自JSF 2.0起,它似乎更容易且更符合命名约定。

贝娄是我当前的目录结构。 流ID为Wizard

目录结构

我知道有一个通过调用返回节点 退出流程的概念。

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

问题是,我可以导航到应用程序中的任何页面,而JSF仍保持该流程的状态。 如果我回到任何向导页面,所有信息仍然存在,这意味着JSF从未删除流范围。

我的问题是:

  1. 如果我有一个“ finish” commandButton,我如何告诉JSF,当用户单击该按钮时,它应该删除当前流程范围吗?
  2. 更重要的是, 如果我没有返回节点怎么办? 如果用户导航到流目录之外的任何视图*,我如何告诉JSF删除流状态? (通过“流程”的概念,我认为这已经是标准行为)

*只需清楚一点,我的意思是另一个JSF视图 (应用程序中的另一个页面)。 我知道,如果用户触发了对我的应用程序之外或JSF范围之外的页面的请求,它将无法执行任何操作。

如果用户导航到流目录之外的任何视图,如何告诉JSF删除流状态?

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

如果我有一个“ finish” commandButton,我如何告诉JSF,当用户单击该按钮时,它应该删除当前流程范围吗?

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

<?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>

您必须确保命令按钮在action属性中返回“ exit”。 例如:

<p:commandButton value="Finish Flow" action="exit"/>

在流中,每当您通过“ action”属性重定向到某个新页面时,请确保将'faces-redirect = true'附加到URL,否则,至少在我的情况下,我会收到“无活动上下文”错误。 例如:

<p:commandButton value="Next Page" action="Page2.xhtml?faces-redirect=true"/>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM