http://dev2dev.bea.com.cn/techdoc/wlportal/20031027.html
簡(jiǎn)介
頁面流提供了一種方便構(gòu)建Web應(yīng)用業(yè)務(wù)和導(dǎo)航邏輯的編程模型。為了顯示和修改頁面流動(dòng)作所收集的數(shù)據(jù),WebLogic Workshop 8.1 數(shù)據(jù)綁定框架將用戶界面中的NetUI JSP標(biāo)簽綁定到Web應(yīng)用數(shù)據(jù)上。兩者相互結(jié)合為構(gòu)建基于Web的用戶界面提供了一種令人矚目的開發(fā)模型。
數(shù)據(jù)綁定是一個(gè)重要主題;這里我們將介紹用于綁定、顯示、更新數(shù)據(jù)的表達(dá)式語言和JSP標(biāo)簽;并將演示如何創(chuàng)建一個(gè)簡(jiǎn)單的表單。本文假定讀者對(duì)基本頁面流和JSP程序設(shè)計(jì)較為熟悉。文中用到的所有代碼都可以從附帶的下載文件
Web application (1.4 MB)中獲得。
參與者 綁定UI到數(shù)據(jù)的過程需要三個(gè)參與者--業(yè)務(wù)對(duì)象/數(shù)據(jù)、NetUI JSP標(biāo)簽庫、表達(dá)式語言。業(yè)務(wù)對(duì)象中含有需要綁定到JSP頁面的數(shù)據(jù)。JSP標(biāo)簽以特定視圖(只讀或可更新)的方式在Web瀏覽器中繪制數(shù)據(jù),而表達(dá)式語言則將兩者粘合在一起,從而可以通過JSP標(biāo)簽引用業(yè)務(wù)對(duì)象的屬性。借助三個(gè)參與者的實(shí)例,Workshop開發(fā)人員可以用靈活且優(yōu)雅的方式創(chuàng)建用于顯示、更新、及創(chuàng)建數(shù)據(jù)的用戶界面。
整篇文章我們都會(huì)用到一個(gè)定義了字段和屬性的JavaBean,屬性更適合說明數(shù)據(jù)是如何綁定到不同類型之上的。該表單的一部分如下;其中定義了一個(gè)公共屬性name 和一個(gè)公共字段eMail。可以把該類看作一個(gè)針對(duì)簡(jiǎn)單Web頁面的業(yè)務(wù)對(duì)象,該Web頁面演示了如何綁定到表單的屬性。
public class Customer { public String eMail = ""; private String name;
public String getName() { return this.name; } . . . } [binding/Controller.jpf] |
URL 也是該bean的一個(gè)屬性。除此之外,同一頁面流中還定義了一個(gè)LocationInfo 類,它暴露了可以進(jìn)行數(shù)據(jù)綁定的復(fù)雜類型。
為了更快將讀者引進(jìn)門,我們假定代表用戶"Dave Smith"的Customer對(duì)象已經(jīng)存在,并且可以通過String類型的關(guān)鍵字"customer"在request的屬性映射中進(jìn)行訪問。這個(gè)Customer的姓名可以借助JSP的NetUI標(biāo)簽顯示在Web頁中。
Customer Name: <netui:label value="{request.customer.name}"/> [binding/simple.jsp] |
它在Workshop JSP 設(shè)計(jì)器中顯示如下:
Customer Name: {request.customer.name} |
并生成如下的HTML輸出:
Customer Name: <span>John Smith</span> |
下面我們將從整體上更進(jìn)一步分析這個(gè)例子和表達(dá)式。
表達(dá)式語言
表達(dá)式語言使得Workshop開發(fā)人員能夠使用一種簡(jiǎn)單的語法在JSP頁面中引用業(yè)務(wù)對(duì)象的數(shù)據(jù)。通常,一個(gè)表達(dá)式引用業(yè)務(wù)對(duì)象上的一個(gè)或一系列屬性,從而可以唯一標(biāo)識(shí)JSP標(biāo)簽所綁定的數(shù)據(jù)。在以上例子中,表達(dá)式{request.customer.name}引用Customer JavaBean中的name 屬性,保存在request中的該JavaBean被稱作"customer"。
在JSP標(biāo)簽屬性中,表達(dá)式分別以'{' 和'}'作為開始和結(jié)束標(biāo)記。標(biāo)簽探測(cè)一個(gè)屬性是否是表達(dá)式、或者其中是否包含表達(dá)式,從而對(duì)屬性進(jìn)行求值。
一個(gè)表達(dá)式含有兩個(gè)獨(dú)立的部分--數(shù)據(jù)綁定上下文:在其中進(jìn)行表達(dá)式求值;屬性:它是表達(dá)式求值返回的結(jié)果。在表達(dá)式{request.customer.name}中, request是綁定上下文,它引用JSP頁面request的屬性映射。表達(dá)式剩下的部分用來引用唯一的對(duì)象屬性。"customer"標(biāo)識(shí)符用來在request的屬性映射中查找相關(guān)對(duì)象,name標(biāo)識(shí)符用來獲取Customer 對(duì)象上的JavaBean 屬性name。從功能上講,該表達(dá)式等同于以下語句:
String name = ((Customer)request.getAttribute("customer")).getName(); |
同樣是引用相同的數(shù)據(jù),表達(dá)式語法更為簡(jiǎn)單。
除了request 上下文,還可以在其它數(shù)據(jù)綁定上下文中求值表達(dá)式,這些上下文用來訪問Web應(yīng)用和頁面流環(huán)境的不同部分。綁定上下文還可以引用其它資源,比如通過url 或 bundle 上下文,它可以分別引用URL參數(shù)或資源包中的國際化字符串。完整的上下文及其引用對(duì)象/資源的列表如下:
上下文名稱 |
上下文引用的對(duì)象 |
actionForm |
和當(dāng)前NetUI 表單標(biāo)簽相關(guān)的動(dòng)作表單 |
pageFlow |
某個(gè)用戶的當(dāng)前頁面流 |
globalApp |
webapp中某個(gè)用戶的Global.app |
bundle |
用于引用聲明或隱含的資源包屬性 |
pageContext |
JSP 頁面的PageContext屬性映射 |
request |
request的屬性映射 |
session |
session的屬性映射 |
application |
servlet上下文的屬性映射 |
url |
用于當(dāng)前請(qǐng)求的URL 查詢參數(shù) |
container |
當(dāng)使用重復(fù)標(biāo)簽繪制某個(gè)數(shù)據(jù)集時(shí),復(fù)雜數(shù)據(jù)綁定標(biāo)簽用它來訪問當(dāng)前條目 |
現(xiàn)在進(jìn)一步討論上表中提到的一些上下文。
同樣是使用表達(dá)式,仍然存在多種不同方法來引用同一對(duì)象的同一屬性。例如,在我們的例子中,以下幾個(gè)表達(dá)式都是等價(jià)的:
- request["customer"]["name"] - request.customer.name - request["customer"].name - request.customer["name"] [binding/index.jsp] |
而且,表達(dá)式既可以訪問字段,也可以訪問屬性,這些屬性返回任意基本類型或Java Object類型,也可以返回它們的數(shù)組、列表和映射類型。一般說來,屬性命名遵循JavaBean屬性的setter和getter方法命名規(guī)范。關(guān)于暴露、命名、引用數(shù)據(jù)綁定對(duì)象屬性的特殊規(guī)則將在下面進(jìn)行討論。
注意:對(duì)象的值既可以是只讀的也可以是可讀/寫的;對(duì)象對(duì)應(yīng)的值的暴露方式?jīng)Q定了它對(duì)于表達(dá)式僅是只讀的,還是當(dāng)Web瀏覽器向服務(wù)器提交數(shù)據(jù)時(shí)該值是可更新的。
訪問屬性
為了識(shí)別類暴露的可綁定數(shù)據(jù)屬性,表達(dá)式語言采用了JavaBean命名規(guī)范。符合以下條件的方法可以暴露一個(gè)只讀屬性:
- public 訪問權(quán)限 - 返回非void類型 - 無參數(shù) - 以"get"作為名稱的開頭 |
可以使用表達(dá)式來引用數(shù)據(jù)綁定上下文中符合以上條件的任意方法。JavaBean屬性的名稱被包含在表達(dá)式中。例如,類中定義了一個(gè)屬性:
public String getName(); [binding/index.jsp] [binding/Controller.jpf] |
在表達(dá)式中它被引用為:
{request.customer.name} [binding/index.jsp] [binding/index.jsp] |
前提是一個(gè)Customer 對(duì)象被指定為“customer”并可以從request中得到。
在本例中,方法 getName 對(duì)應(yīng)名為name的JavaBean屬性;這是通過去掉“get”并將第一個(gè)字符變成小寫之后得到的。一個(gè)例外是如果“get”之后的頭兩個(gè)字符都是大寫的,JavaBean屬性的名稱將在表達(dá)式中保持不變。例如,屬性:
public String getURL(); [binding/index.jsp] [binding/Controller.jpf] |
在表達(dá)式中被引用為:
{request.customer.URL} [binding/index.jsp] [binding/index.jsp] |
迄今為止,以上的name 和URL 屬性都是只讀的,因?yàn)槲覀儧]有為它們定義setter方法,該方法可以用來更新對(duì)象的屬性值。一個(gè)JavaBean的setter方法需要符合以下條件:
- 以"set"作為名稱開頭 - 返回void類型 - 只有一個(gè)參數(shù),它的類型與對(duì)應(yīng)getter方法的返回類型相同 |
前面兩個(gè)屬性的JavaBean setter如下:
public void setName(String name); public void setURL(String url); [binding/index.jsp] [binding/Controller.jpf]
|
如果對(duì)象中同時(shí)存在正確定義的getter 和setter,屬性就是可讀/寫的。這種類型的屬性十分重要,因?yàn)榭梢詮腤eb頁面更新它們的值。
訪問字段
可以通過表達(dá)式訪問公共字段。上面Customer類中定義的“eMail”字段就是一個(gè)例子。公共字段總是可讀/寫的。Customer的email地址在Web頁中可以顯示為:
<netui:label value="{request.customer.eMail}"/> [binding/index.jsp] [binding/Controller.jpf]
|
訪問數(shù)組或列表中的元素
使用常用的[index] 語法可以引用數(shù)組或列表中的條目。如果一個(gè)屬性被暴露為:
public String[] getZipArray(); [binding/Controller.jpf] [binding/index.jsp]
|
那么可以通過以下表達(dá)式訪問數(shù)組的第四個(gè)條目:
{request.locationInfo.zipArray[3]} [binding/index.jsp] [binding/index.jsp] |
假定LocationInfo對(duì)象可以在request中通過關(guān)鍵字“l(fā)ocationInfo”進(jìn)行訪問,
如果一個(gè)屬性被暴露為:
public List getZipList(); [binding/index.jsp] [binding/Controller.jpf] |
那么以下表達(dá)式將會(huì)訪問列表中的第四個(gè)條目:
{request.locationInfo.zipList[3]} [binding/index.jsp] [binding/index.jsp] |
此類表達(dá)式求值還是略有不同。如果該表達(dá)式在一個(gè)長(zhǎng)度僅為2的String[]上被求值,因?yàn)閿?shù)組的長(zhǎng)度小于表達(dá)式的引用長(zhǎng)度,所以將會(huì)發(fā)生錯(cuò)誤。如果屬性是列表類型,表達(dá)式將被簡(jiǎn)單地求值為null。
使用NetUI Repeater標(biāo)簽集可以方便地繪制數(shù)組和列表。稍候一篇dev2dev文章將會(huì)涉及該標(biāo)簽集以及“container”綁定上下文。
訪問映射中的元素
表達(dá)式還可以采用與訪問屬性相同的語法來引用映射中特定鍵值對(duì)應(yīng)的條目。例如,如果LocationInfo 類暴露了一個(gè)含有州名縮寫和州名的Map,并將其定義為帶有JavaBean getter方法的可綁定數(shù)據(jù)屬性:
public Map getAbbrevMap(); [binding/index.jsp] [binding/Controller.jpf] |
那么,以下兩個(gè)表達(dá)式都可以使用鍵值“CO”在映射中進(jìn)行查找:
{request.locationInfo.abbrevMap.CO} {request.locationInfo.abbrevMap["CO"]} [binding/index.jsp] [binding/index.jsp]
|
訪問基本類型
采用以上任何機(jī)制暴露的數(shù)據(jù)類型可以是Java對(duì)象或基本類型。如果某個(gè)屬性或字段的類型是基本類型,比如int 或 boolean ,表達(dá)式的求值結(jié)果將是基本類型的Java對(duì)象包裝器。在本例中,將分別是Integer 和 Boolean。
表達(dá)式和NetUI JSP標(biāo)簽
在NetUI JSP標(biāo)簽上使用表達(dá)式、屬性可以引用業(yè)務(wù)對(duì)象屬性,并將數(shù)據(jù)顯示在Web頁面上。同一屬性的顯示方式取決于標(biāo)簽的選擇。比如,綁定到NetUI label的字符串屬性是只讀的,而綁定到NetUI form內(nèi)NetUI text box的字符串屬性卻是可讀/寫的。
目前存在三個(gè)NetUI標(biāo)簽庫——HTML、復(fù)雜數(shù)據(jù)綁定、模板,本文不涉及后面兩個(gè)。HTML標(biāo)簽集盡可能遵循HTML4.01規(guī)范并將自己的標(biāo)簽和HTML中定義的元素相互結(jié)合。例如,textBox、 checkBox、 和radioButton 標(biāo)簽分別顯示HTML輸入標(biāo)簽類型“text”、 “checkbox”、 和“radio”。可以在Workshop標(biāo)簽面板中找到這些標(biāo)簽。

也可以在Workshop 8.1的Insert菜單中找到這些標(biāo)簽。
NetUI HTML 標(biāo)簽進(jìn)一步可以分為兩類——只能顯示數(shù)據(jù)的標(biāo)簽(或稱為只讀的)、能夠在服務(wù)器和Web瀏覽器之間“往返”的標(biāo)簽(或稱為可讀/寫的)。可以使用諸如netui:form 內(nèi)的textBox這類標(biāo)簽在服務(wù)器和客戶端之間傳遞數(shù)據(jù)。關(guān)于此類標(biāo)簽如何綁定數(shù)據(jù),彼此之間也存在不同。
只讀NetUI標(biāo)簽
只讀標(biāo)簽使用表達(dá)式綁定屬性“value”來指定在頁面中繪制的數(shù)據(jù)。此類標(biāo)簽只是簡(jiǎn)單地通過表達(dá)式從業(yè)務(wù)對(duì)象中讀取數(shù)值并在Web頁面上繪制,可能還會(huì)對(duì)輸出結(jié)果進(jìn)行格式處理。我們已經(jīng)知道netui:label 標(biāo)簽可以在頁面上繪制表達(dá)式的值,其實(shí)它也可以繪制普通文本:
<netui:label value="Blue"/> [binding/index.jsp] [binding/index.jsp]
|
因?yàn)閘abel標(biāo)簽不是到服務(wù)器的可往返標(biāo)簽,所以它的value屬性可以是文本和表達(dá)式的組合。例如,想要顯示用反斜杠分開的客戶姓名和年齡,可以這樣使用label:
<netui:label value="{request.customer.age} / {request.customer.age}"/> [binding/index.jsp] [customerEntry/display.jsp]
|
每個(gè)表達(dá)式都將被求值,文本“/”將會(huì)混合到表達(dá)式結(jié)果中。
可讀/寫NetUI標(biāo)簽
第二組標(biāo)簽使用“dataSource”屬性,它們比較特殊因?yàn)楸弧癲ataSource”屬性引用的數(shù)據(jù)可以在Web瀏覽器和服務(wù)器之間往返。盡管dataSource屬性可以綁定表達(dá)式,但該屬性的value必須是一個(gè)純粹的表達(dá)式。與label標(biāo)簽的value屬性不同,dataSource屬性不能混合文本和表達(dá)式,因?yàn)閐ataSource屬性的value被用在兩個(gè)地方:
- 繪制JSP頁面的時(shí)候通過表達(dá)式讀取值 - 當(dāng)表單所在頁面POST的時(shí)候,通過同一個(gè)表達(dá)式將值寫回到業(yè)務(wù)對(duì)象中去。
|
采取這種方式,諸如textBox這樣的標(biāo)簽就可以在服務(wù)器和Web瀏覽器之間來回傳輸數(shù)據(jù)。
如果在dataSource 屬性中混合使用文本,屬性就不是一個(gè)純粹的表達(dá)式并將報(bào)錯(cuò)。因?yàn)閐ataSource 屬性通常被用于同數(shù)據(jù)庫交換數(shù)據(jù),所以這里使用的表達(dá)式必須引用那些可以更新的數(shù)據(jù)綁定上下文,它們是actionForm、pageFlow、和 globalApp。 除此以外,所有其它綁定上下文在數(shù)據(jù)被POST到服務(wù)器時(shí)都是只讀的。
一個(gè)簡(jiǎn)單例子
讓我們對(duì)前面的Customer例子稍作修改并利用NetUI編寫一個(gè)“Hello World”,從而形成一個(gè)實(shí)用的例子。本例中含有一個(gè)頁面流simpleForm 和一個(gè)JSP。JSP定義了一個(gè)綁定到頁面流中某個(gè)action的NetUI表單。當(dāng)表單從瀏覽器中POST的時(shí)候,動(dòng)作表單將被創(chuàng)建,提交的數(shù)據(jù)將被添加到動(dòng)作表單中。接著,輸入頁面被刷新,剛剛在只讀label中顯示的信息將會(huì)顯示到可編輯的文本框中。這里所說的頁面流是指本文示例應(yīng)用中的simpleForm。
首先我們來看看動(dòng)作表單,它們負(fù)責(zé)封裝那些在頁面中被顯示并更新的數(shù)據(jù)。該類定義了通過NetUI HTML在JSP表單標(biāo)簽內(nèi)可編輯的屬性;它暴露了唯一一個(gè)屬性——message。
public static class MessageForm extends FormData { private String message;
public void setMessage(String message) { this.message = message; }
public String getMessage() { return this.message; } } [binding/index.jsp] [simpleForm/Controller.jpf]
|
接著我們來看看JSP頁面。這里的netui:form 標(biāo)簽用于引用在表單POST時(shí)將會(huì)執(zhí)行的頁面流動(dòng)作。如果您對(duì)頁面流不熟悉,請(qǐng)參閱參考材料部分的頁面流參考手冊(cè)。一般來說,從可讀/寫NetUI標(biāo)簽POST到服務(wù)器的更新必須在NetUI form 標(biāo)簽中進(jìn)行。
<netui:form action="echoMessage" focus=""> <table> <tr> <td>Current message:</td> <td><netui:label value="{actionForm.message}"/></td> </tr> <tr><td colspan="2"> </td></tr> <tr> <td><netui:label value="Message:"/></td> <td><netui:textBox dataSource="{actionForm.message}"/></td> </tr> </table> <netui:button value="echoMessage"/> </netui:form> [binding/index.jsp] [simpleForm/index.jsp]
|
JSP中有兩個(gè)附加NetUI標(biāo)簽;其中netui:textBox 利用表達(dá)式{actionForm.message}在當(dāng)前動(dòng)作表單中顯示message的值。最初該值以及textBox都是空的。還有一個(gè)button標(biāo)簽用來把表單提交到服務(wù)器。運(yùn)行例子的時(shí)候,請(qǐng)?jiān)谖谋究蛑休斎搿癏ello World”并按下“Submit”。
看!當(dāng)表單提交到服務(wù)器時(shí),頁面流生命周期創(chuàng)建了接收POST數(shù)據(jù)(即本例中的message)的動(dòng)作表單。因?yàn)閠extBox的dataSource 屬性對(duì)應(yīng)的表達(dá)式被映射為HTML輸入標(biāo)簽——{actionForm.message},所以message的值被路由到該屬性上。
一旦表單填充完畢,postback 動(dòng)作就會(huì)執(zhí)行并在頁面中重新繪制相同的表單。運(yùn)行結(jié)果是:表達(dá)式{actionForm.message} 現(xiàn)在同時(shí)指向label和textBox 中顯示的“Hello World”。在文本框中輸入文本并重新提交表單可以修改該值。
技巧和經(jīng)驗(yàn)
如何訪問頁面流的成員屬性?
頁面流可以像其它類一樣暴露JavaBean屬性;利用表達(dá)式和pageFlow 綁定上下文可以綁定這些屬性。例如,如果一個(gè)頁面流用以下方法暴露屬性productName:
public String getProductName() { return productName; } [binding/index.jsp] [howdoi/Controller.jpf] |
就可以通過以下表達(dá)式在JSP中進(jìn)行數(shù)據(jù)綁定:
{pageFlow.productName} [binding/index.jsp] [howdoi/index.jsp] |
你還可以綁定到頁面流暴露的公共字段。
應(yīng)該在頁面流上暴露映射嗎?
在任何可以接受POST數(shù)據(jù)的數(shù)據(jù)綁定上下文中暴露Map類型都是危險(xiǎn)的。問題在于映射可以變得很大,這就在服務(wù)上開了一個(gè)安全漏洞:因?yàn)榫W(wǎng)頁可以直接POST數(shù)據(jù)到Map,這將會(huì)導(dǎo)致map無限變大、消耗掉可觀的服務(wù)器資源。
通過類似request這樣的只讀數(shù)據(jù)綁定上下文來暴露Map類型要安全很多。上面的例子中,LocationInfo對(duì)象通過abbrevMap 屬性實(shí)現(xiàn)了這點(diǎn)。
如果在表單上暴露一個(gè)int 類型的屬性,從頁面POST出去的是什么類型?
當(dāng)JSP頁面POST數(shù)據(jù)到服務(wù)器時(shí),所有的數(shù)據(jù)都以字符串形式到達(dá)。應(yīng)用POST數(shù)據(jù)到頁面流屬性或動(dòng)作表單的過程中,NetUI會(huì)設(shè)法把已經(jīng)POST到底層屬性或字段的字符串?dāng)?shù)據(jù)轉(zhuǎn)換為原有的類型。
例如,如果動(dòng)作表單暴露一個(gè)類型為int、名稱為 age 的屬性,并且該字段可以從NetUI表單更新,類型轉(zhuǎn)換工作即是把String 類型的“42”的轉(zhuǎn)換成int 類型的42。如果轉(zhuǎn)換失敗,失敗信息將會(huì)顯示在運(yùn)行WebLogic的命令提示窗口中。
如何顯示一個(gè)數(shù)據(jù)列表或數(shù)組?
利用NetUI復(fù)雜數(shù)據(jù)綁定標(biāo)簽可以繪制諸如列表、數(shù)組、映射、和行集這類的數(shù)據(jù)集。這些將在接下來的dev2dev文章中討論。
表達(dá)式求值失敗會(huì)怎樣?
當(dāng)JSP準(zhǔn)備繪制時(shí),如果一個(gè)表達(dá)式求值失敗了,JSP頁面上將會(huì)顯示一個(gè)失敗信息。假定有屬性綁定的例子:
Customer Name: <netui:label value="{request.customer.name}"/> [binding/index.jsp] [binding/index.jsp] |
如果request的屬性映射中不包含名為“customer”的對(duì)象,那么綁定將會(huì)失敗,因?yàn)閚ame屬性無法訪問null對(duì)象。請(qǐng)嘗試將例子改為:
Customer Name: [binding/index.jsp] [binding/index.jsp] |
這樣就可以知道表達(dá)式求值是如何失敗的了。
Workshop 8.1 IDE如何幫我進(jìn)行數(shù)據(jù)綁定?
Workshop可以用多種方式幫助JSP作者進(jìn)行數(shù)據(jù)綁定,其中最重要的一種是通過數(shù)據(jù)面板。使用數(shù)據(jù)面板可以在JSP頁面中創(chuàng)建能夠顯示或更新數(shù)據(jù)的NetUI標(biāo)簽。
例如,在Workshop中打開JSP頁面howdoi/index.jsp;在頁面上,數(shù)據(jù)面板顯示如下:
您可以看見productName屬性在面板中是可用的。如果拖動(dòng)它到JSP頁面中,以下代碼將被生成并將在頁面中顯示產(chǎn)品名稱:
<netui:label value="{pageFlow.productName}"></netui:label>
|
試著添加其它屬性到頁面流中并拖動(dòng)它們到JSP頁面中,從而生成可以顯示數(shù)據(jù)的NetUI標(biāo)簽。
如果頁面上有動(dòng)作表單,它上面的屬性也可以被拖動(dòng)到JSP上。
結(jié)論
本文覆蓋的范圍很廣。現(xiàn)在重新回顧一下,表達(dá)式語言使得NetUI JSP能夠引用業(yè)務(wù)對(duì)象暴露的數(shù)據(jù)、頁面流、以及數(shù)據(jù)綁定上下文暴露的其它對(duì)象和資源。表達(dá)式可以引用這些對(duì)象的屬性和字段,并且NetUI HTML標(biāo)簽既可以用于顯示數(shù)據(jù),也可以用于從Web瀏覽器更新數(shù)據(jù)。
本文附帶的應(yīng)用程序包含多個(gè)示例,其中包括基本數(shù)據(jù)綁定規(guī)則的例子、Hello World例子、和一個(gè)創(chuàng)建、顯示、和編輯Customer對(duì)象的復(fù)雜例子。
在以后的文章中我們還會(huì)介紹更多的內(nèi)容,希望本文使您對(duì)WebLogic Workshop 8.1的從UI到數(shù)據(jù)的綁定有了初步了解。