maf中anglearc_Oracle MAF中的LOV
maf中anglearc
我們都喜歡最強大的ADF功能值列表之一。 使用它們,我們可以聲明并輕松地在ADF應用程序中構(gòu)建非常復雜的功能。 一件好事是,我們在Oracle MAF中也有類似的方法。 在ADF BC中,我們在業(yè)務服務級別(基本上在實體或VO級別)定義LOV,屬性UI提示,驗證規(guī)則等。 在MAF中,我們可以執(zhí)行相同的操作,但是可以在數(shù)據(jù)控件級別執(zhí)行。 這很明顯,因為誰知道業(yè)務服務是什么。 它可以是Oracle MAF中的任何內(nèi)容。
因此,在本文中,我將展示如何在Oracle MAF中定義和使用LOV。
讓我們考慮一個簡單的用例。 有一個付款表格如下所示:
最終用戶在下拉列表中選擇一個帳戶,帳戶總余額將用作默認付款金額,但是該金額可以更改。
業(yè)務模型基于幾個POJO類:
public class PaymentBO {private int accountid;private double amount;private String note;和
public class AccountBO {private int id;private String accountName;private double balance;還有一個AccountService類,提供了可用帳戶的列表:
public class AccountService {private final static AccountService accountService = new AccountService();private AccountBO[] accounts = new AccountBO[] {new AccountBO(1, "Main Account", 1000.89),new AccountBO(2, "Secondary Account", 670.78),new AccountBO(3, "Pocket Account", 7876.84),new AccountBO(4, "Emergency Account", 7885.80)};public AccountBO[] getAccounts() {return accounts;}public static synchronized AccountService getInstance() {return accountService;}還有PaymentDC類,它作為數(shù)據(jù)控件公開:
public class PaymentDC {private final PaymentBO payment = new PaymentBO();private final AccountService accountService = AccountService.getInstance();public PaymentBO getPayment() {return payment;}public AccountBO[] getAccounts() {return accountService.getAccounts();} }DataControl結(jié)構(gòu)如下所示:
為了能夠定義“付款”屬性設(shè)置,例如UI提示,驗證規(guī)則,LOV等。我將單擊“鉛筆”按鈕,我將得到一個看起來與ADF BC中的表單非常相似的表單:
那些熟悉ADF BC的人在這里幾乎不會迷路。 因此,在“值列表”頁面中,我們可以為accountid屬性定義一個LOV:
完成此操作后,我們就可以設(shè)置LOV的UI提示等。基本上就是這樣。 我們需要做的就是將accountID屬性從該DataControl面板拖放到頁面上,作為selectOneChoice組件。
<amx:selectOneChoice value="#{bindings.accountid.inputValue}"label="#{bindings.accountid.label}" id="soc1"><amx:selectItems value="#{bindings.accountid.items}" id="si1"/> </amx:selectOneChoice>
框架將完成剩下的工作,在pageDef文件中定義列表綁定定義:
<list IterBinding="paymentIterator" StaticList="false"Uses="LOV_accountid" id="accountid" DTSupportsMRU="true"SelectItemValueMode="ListObject"/>但是,當選擇帳戶時,我們必須以某種方式實現(xiàn)用帳戶余額設(shè)置付款金額。 在ADF中,我們將能夠在LOV的定義中定義多個屬性映射,這就是解決方案。 像這樣:
但是在MAF中它不起作用。 不幸。 僅主映射有效。 因此,我們將在PaymentBO.setAccountid方法中手動執(zhí)行此操作:
public void setAccountid(int accountid) {this.accountid = accountid;AccountBO account = AccountService.getInstance().getAccountById(accountid);if (account != null) {setAmount(account.getBalance());} }在PaymentBO.setAmount方法中,我們必須觸發(fā)一個change事件,以便刷新頁面上的value字段:
public void setAmount(double amount) {double oldAmount = this.amount;this.amount = amount;propertyChangeSupport.firePropertyChange("amount", oldAmount, amount); }而已! 這篇文章的示例應用程序可以在這里下載。 它需要JDeveloper 12.1.3和MAF 2.1.0。
翻譯自: https://www.javacodegeeks.com/2015/03/lovs-in-oracle-maf.html
maf中anglearc
總結(jié)
以上是生活随笔為你收集整理的maf中anglearc_Oracle MAF中的LOV的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jdbc pdf_JDBC教程– ULT
- 下一篇: 电脑常用命令提示符大全电脑常用命令提示符