JSF(二) Faces Flow

前言

最近在研究JSF,是一个JavaEE的前端框架,其中有一个技术叫做Faces Flow,今天小编就给大家介绍一下faces流是个什么技术

what?

JSF技术的Faces流特性允许创建一组FlowScoped作用域页面,这个作用域大于请求作用域,但是小于会话作用域。

例子:在线商店的结账过程,我们会创建一系列页面。这一系列页面是一组自包含的页面,根据需要从一个商店转换到另一个商店。

自己的理解:感觉像是为一个流程化的需求创建一组关联的页面,我们的评教系统中的配题,faces flow就可以应用在这个需求里边,还有审批的流程等等

特点

类似于过程式编程中的子例程,表现在以下方面:

  • 与子例程类似,流有一个明确定义的入口点,参数表和返回值。不痛的是,流可以返回多个值

  • 与子例程类似,流有一个作用域,使信息只在调用流期间可用。这些信息在流的作用域之外是不可用的,而且一旦流返回,就不能使用任何资源

  • 与子例程类似,流在返回前可以调用其他流,流的调用在一个调用栈中维护:新流会在占中压入,返回则使栈弹出

组成

JSF(二) Faces Flow_第1张图片

“流”中概念详细讲解:

  1. 流中数据:数据以流为作用域,不过通过制定参数并调用另一个流,可以从一个流向另一个流传递数据
  2. 流可以嵌套,所以如果从一个流调用另一个流,然后退出第二个流,则会返回到调用流,而不是返回到第二个流的返回节点
  3. 可以通过编程方式配置一个流,为此要创建一个有@FlowDefinition注解的类,或者可以通过使用一个配置文件来配置流。配置文件中可以只配置一个流,也可以使用faces-config.xml文件将所有流放在一起。

两个流的交互过程
JSF(二) Faces Flow_第2张图片

在FlowA中,flow-a就是开始节点,next_a1和next_a2是另外两个页面。在next_a2页面中,用户可以使用所定义的返回节点taskFlowReturn1退出这个流,也可以调用FlowB,并传递两个参数。FlowA还定义了两个入站参数,可以从B接收。FlowB与FlowA基本上相同,只不过流和文件的名字不同。每个流都有一个相关联的托管managed bean

Demo

目录结构:

JSF(二) Faces Flow_第3张图片


index.xhtml:开始页面,页面上的按钮导向了simple-flow.xhtml页面




<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html">
    <h:head>
        <title>Index Pagetitle>
    h:head>
    <h:body>
        <h:form prependId="false">
            <h2>Index Pageh2>

            <p><h:commandButton value="Enter Flow" action="simple-flow"/>p>
        h:form>
    h:body>
html>


simple-flow.xhtml:如果没有显示流定义,与流同名的页面将作为流的开始节点。这个页面就认识是这个流的开始节点,这个页面要求输入一个流作用域值,并提供一个按钮,导航到下一个页面

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html">
    <h:head>
        <title>First Page in the Flowtitle>
    h:head>
    <h:body>
        <h:form prependId="false">
            <h2>First Page in the Flowh2>

            <p>Value: <h:inputText id="input" value="#{flowScope.value}" />p>

            <p><h:commandButton value="Next" action="simple-flow-page2" />p>
        h:form>
    h:body>
html>



simple-flow-page2.xhtml:第二个页面,可以又任意的名字,会显示这个流的作用域值,并提供一个导航到返回页面

 <p>Value: #{flowScope.value}p>

            <p><h:commandButton value="Return" action="simple-flow-return" />p>

simple-flow-return.xhtml是返回页面。返回页面必须位于流之外,所以他们在不同一层的目录结构。这个页面会显示流作用域值,从而展示他没有留以外的值,并提供一个链接,导航到index.xtml页面

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html">
    <h:head>
        <title>Return Pagetitle>
    h:head>
    <h:body>
        <h:form prependId="false">
            <h2>Return Pageh2>

            <p>Value (should be empty): 
                "<h:outputText id="output" value="#{flowScope.value}" />"p>

            <p><h:link outcome="index" value="Back to Start" />p>
        h:form>
    h:body>
html>

这个例子之所以没有用到managedbean,是因为四个Facelets只使用流作用域数据。

网页效果

总结

其实页面上的内容都很简单,这一篇都是一些非常基础的概念,主要是认识Faces Flow是什么,由什么组成,以后博客中会举一些更加复杂的实例

注:Demo来自javaee官网
请点击获取更多信息

你可能感兴趣的:(-----,【前台框架】,-----,【JAVAEE】)