adf开发_ADF中的动态弹出内容

adf开发

对于那些还没有听说过的人,ADF是基于JSF(Java Server Faces)的Java EE技术。 它通过新组件,更分离的生命周期,业务模型层和许多其他改进来升级JSF的功能。 我将描述如何使用动态数据创建弹出窗口,这些动态数据会根据用户交互而变化。

建议在ADF中以声明性的方式处理大多数工作,这是正确的ADF方式。 在我们的示例中,我们将使用此精确方法,这意味着我们将以声明方式进行所有操作。

为了说明这种方法,我们将使用一个名为Employee的自定义POJO,它将保存公司中给定员工的所有信息,例如名字,姓氏,生日和薪水。 我们的应用程序将列出所有可用的雇员,对于每个雇员,我们都可以在详细信息弹出窗口中查看更多详细信息。

对于页面,我正在使用不基于页面片段的全新任务流, empListBean在页面流范围empListBean托管bean注册为empListBean 。 这个bean将提供一个雇员集合,仅用于提供数据。 在您的实际情况中,可以使用来自DB或WS的对象来更改它-这取决于情况。 例如,将创建雇员并将其保留在Map集合的bean中,其中键是雇员的ID。

我们已经在桌子上可视化了员工–这里没什么花哨的:

<af:table var="emp" rowBandingInterval="0" id="t1"
   value="#{pageFlowScope.empListBean.employeesOnly}">
 <af:column sortable="false" headerText="First Name" id="c1" align="center">
    <af:outputText value="#{emp.firstName}" id="ot1"/>
 </af:column>
 <af:column sortable="false" headerText="Last Name" id="c2"  align="center">
    <af:outputText value="#{emp.lastName}" id="ot2"/>
 </af:column>
 <af:column sortable="false" id="c5" align="center">
    <af:button text="Details" id="cb1">
        <af:clientAttribute name="selectedId" value="#{emp.idCode}"/>
        <af:showPopupBehavior popupId=":empDetails" triggerType="click"/>
    </af:button>
 </af:column>
 </af:table>

这里的关键点是,在按钮组件中,我们添加了一个属性标签来保存当前员工的ID CODE。 并且我们已经使用了声明式方法通过showPopupBehavior标记在页面上调用弹出窗口。

现在是弹出部分。 这并不难,这是它的外观:

<af:popup id="empDetails" launcherVar="source" eventContext="launcher"
             contentDelivery="lazyUncached">
<af:setPropertyListener type="popupFetch"
   from="#{source.attributes.selectedId}" to="#{viewScope.id}"/>
<af:dialog type="ok" title="Employee Details" id="d2">
    <af:panelFormLayout maxColumns="1" id="pfl1">
        <af:panelLabelAndMessage label="Birth date" id="plam1">
            <af:outputText id="ot3"
value="#{pageFlowScope.empListBean.employees[viewScope.id].birthDate}">
             <f:convertDateTime pattern=""/>
            </af:outputText>
        </af:panelLabelAndMessage>
        <af:panelLabelAndMessage label="Salary" id="plam2">
            <af:outputText id="ot4"
value="#{pageFlowScope.empListBean.employees[viewScope.id].salary}"/>
        </af:panelLabelAndMessage>
     </af:panelFormLayout>
</af:dialog>
</af:popup>

在此检查两个标签及其属性很重要:

<af:popup id="empDetails" launcherVar="source" eventContext="launcher"
             contentDelivery="lazyUncached">
<af:setPropertyListener type="popupFetch"
	from="#{source.attributes.selectedId}" to="#{viewScope.id}"/>

在弹出窗口中,我们声明调用弹出窗口的组件以source显示-在这里您可以指定适合您的名称。 对于事件上下文,我们选择ADF中预定义的launcher器。

然后是setPropertyListener ,它将一个值从一个地方设置到另一个地方。 重要的是,此值是在popupFetch上设置的,该值发生在用户实际看到数据之前。 我们的位置是source组件的属性,我们在其中设置了员工的ID,并将其设置为名称为id的视图范围,此名称以后可在表达式语言中引用。 我们使用idempListBean bean中的Map中获取正确的员工,然后显示此人的其他信息。

为了创建此示例项目,我使用了Oracle JDeveloper Studio 12c,这是开发ADF应用程序时推荐的IDE。 可以从Oracle免费下载。

翻译自: https://jaxenter.com/dynamic-pop-up-content-in-adf-120946.html

adf开发

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值