ADF11g-017:ADF中Taskflow传参的简单使用

场景描述

      如下图,我要在Department页面选中一个DepartmentId,然后把这个值传入到另一个Taskflow中(见图一),然后在这个Taskflow中选中一个Employee,将他的名字返回给Department页面。这里我没有用Master-Detail功能,Employee和Department两个VO是独立的,没有建立View Link关系,仅仅为了讲述Taskflow中是如何传递参数的。

     ADF11g-017:ADF中Taskflow传参的简单使用_第1张图片

      图一

     ADF11g-017:ADF中Taskflow传参的简单使用_第2张图片

     图二

     ADF11g-017:ADF中Taskflow传参的简单使用_第3张图片

     图三

     ADF11g-017:ADF中Taskflow传参的简单使用_第4张图片

     图四

   

一、在Department页面中的Command Link中,设置setActionListener或者setPropertyListener把当前DepartmentId传入到pageFlowScope中(图一)。        

<af:column sortProperty="DepartmentId" sortable="false"
                   headerText="#{bindings.DepartmentsView1.hints.DepartmentId.label}"
                   id="c4">
          <af:commandLink id="ot4" text="#{row.DepartmentId}" action="employee">
            <af:setActionListener from="#{row.DepartmentId}"
                                  to="#{pageFlowScope.deptId}"/>
          </af:commandLink>
        </af:column>
    说明:此处定义了一个pageFlowScope的deptId,并且将当前选中的DepartmentId设置到这个变量中。

    另外,在Department所在的TaskFlow中拖入Employee页面的TaskFlow,并且选中这个TaskFlow,如下图

    ADF11g-017:ADF中Taskflow传参的简单使用_第5张图片

    图中的departmentId即是下一步中定义的departmentId,并且给它赋值#{pageFlowScope.deptId}(页面上传过来的),图中EmployeeName也是下一步中定义的Return Value,将Return Value中的值放入pageFlowScope范围的empName变量中,在Employee页面中使用这个变量,如图四中红框中显示的部分。

二、在Taskflow中定义Input Parameters和Return Value Definitions

    在Employee页面所在Taskflow中定义Input Parameters,和Return Value Definitions,如下图和源代码。

    ADF11g-017:ADF中Taskflow传参的简单使用_第6张图片

<input-parameter-definition id="__3">
      <name id="__2">departmentId</name>
      <value>#{pageFlowScope.departmentId}</value>
    </input-parameter-definition>
    <return-value-definition id="__16">
      <name id="__17">EmployeeName</name>
      <value>#{pageFlowScope.employeeName}</value>
    </return-value-definition>
    说明:这里定义了一个接收传入的参数departmentId和接收返回参数的EmployeeName。上图中1处是在定义时自动生成的,我想应该是个默认值,实际上经测试去掉这个也没有关系,可以在这里定义一个常量,试着不给departmentId传参,看是否能根据指定的departmentId查询出对应的Employees结果。上图2处是界面上定义的变量,目的是在界面上通过Command组件将选中的Employee Name传到这个变量中,在设置到Return Value中,继续看以下步骤。

三、进入Employee页面前执行以departmentId为参数的查询,在Employee页面中的CommandLink中设置setActionListener或者setPropertyListener把当前DepartmentId传入到pageFlowScope中(图三),类似第一步。Employee页面的TaskFlow如下图:

    ADF11g-017:ADF中Taskflow传参的简单使用_第7张图片

    

四、详细内容参见源代码

http://download.csdn.net/detail/ygj26/4622897


参考文献

http://docs.oracle.com/cd/E23943_01/web.1111/b31974/taskflows_parameters.htm#CHDCAJIH

    

你可能感兴趣的:(ADF11g-017:ADF中Taskflow传参的简单使用)