中文字幕一区二区人妻电影,亚洲av无码一区二区乱子伦as ,亚洲精品无码永久在线观看,亚洲成aⅴ人片久青草影院按摩,亚洲黑人巨大videos

ADF中的動態(tài)彈出內(nèi)容

發(fā)布于:2021-01-21 10:15:11

0

134

0

ADF java JSF java ee

在這里,我們看一下如何使用javaee升級ADF來構(gòu)建一個彈出窗口系統(tǒng),該系統(tǒng)根據(jù)用戶的交互動態(tài)地做出反應(yīng)。

對于那些沒聽說過的人來說,ADF是一種基于JSF(javaserverfaces)的javaee技術(shù)。它用新的組件、更獨立的生命周期、業(yè)務(wù)模型層和許多其他改進(jìn)來升級JSF的特性。我將描述如何使用動態(tài)數(shù)據(jù)創(chuàng)建彈出窗口,這些數(shù)據(jù)會根據(jù)用戶交互進(jìn)行更改。

在ADF中,建議用聲明式的方式完成大部分工作,這是正確的ADF方式。在我們的示例中,我們將使用這個確切的方法,這意味著我們將以聲明的方式來做所有事情。

為了說明這個方法,我們將使用一個名為Employee的定制POJO,它將保存公司中給定員工的所有信息,比如名字、姓氏、出生日期和薪水。我們的應(yīng)用程序?qū)⒘谐鏊锌捎玫膯T工,我們可以在詳細(xì)信息彈出窗口中看到每個員工的詳細(xì)信息。

對于這個頁面,我使用的是全新的taskflow,而不是基于頁面片段,并且我在頁面流作用域中注冊了一個托管bean,名為empListBean。這個bean將提供一個雇員集合,只用于提供數(shù)據(jù)。它可以在您的實際場景中使用來自DB或WS的對象進(jìn)行更改—這取決于具體情況。例如,雇員被創(chuàng)建并保存在映射集合的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>

這里的關(guān)鍵點是,在button組件中,我們添加了一個屬性標(biāo)記來保存當(dāng)前員工的ID代碼。我們使用聲明性的方式通過showPopupBehavior標(biāo)記調(diào)用頁面上的彈出窗口。

現(xiàn)在是彈出部分。這不是什么難事,這是它看起來的樣子:

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

在此,檢查這兩個標(biāo)記及其屬性非常重要:

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

從彈出窗口中,我們聲明調(diào)用彈出窗口以顯示為source的組件—在這里您可以指定任何適合您的名稱。對于事件上下文,我們選擇ADF中預(yù)定義的launcher。

然后是setPropertyListener,它將一些值從一個地方設(shè)置到另一個地方。這里最重要的一點是,這個值是在用戶實際看到數(shù)據(jù)之前設(shè)置的。我們的from place是source組件的屬性,在這里我們設(shè)置了雇員的ID,并將其設(shè)置為id名稱下的視圖范圍,該名稱稍后可以在表達(dá)式語言中引用。我們使用idempListBeanbean中的地圖中獲取正確的員工,然后顯示此人的附加信息。

為了創(chuàng)建這個示例項目,我使用了oraclejdeveloperstudio12c,這是開發(fā)ADF應(yīng)用程序時推薦的IDE。