欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
實(shí)現圖形JSF組件

  開(kāi)發(fā)人員認為,如果有合適的工具來(lái)創(chuàng )建交互式Web界面,他們就能將時(shí)間集中在核心需求和定制上,并在規定時(shí)間內及時(shí)得交付應用程序。與其他技術(shù)如JavaServer Pages或Apache Struts 相比,JavaServer Faces (JSF)技術(shù)為創(chuàng )建交互式Web應用程序帶來(lái)了很多便利。JSF在程序邏輯和GUI表示之間劃出一條清晰的界限,提高了對Web程序的維護能力,并為Web用戶(hù)界面組件的開(kāi)發(fā)和重用提供了一個(gè)框架。

  如今,許多Web應用程序開(kāi)發(fā)人員都在轉而使用JSF,但是他們發(fā)現,預先定制的JSF UI組件受到基本DHTML窗口部件的限制。監管或業(yè)務(wù)流程監控之類(lèi)的高級應用程序需要能與JSF框架兼容的高級可視化組件。JSF框架的標準化使它易于開(kāi)發(fā)能夠重用的自定義Web GUI組件。另外,Web組件開(kāi)發(fā)商現在能提供更復雜的組件,并承諾Web應用程序開(kāi)發(fā)人員能夠輕松地使用這些組件。此類(lèi)JSF用戶(hù)界面組件必須集成并部署到JSF運行時(shí)框架中去,并在其中完全展開(kāi),還必須在設計時(shí)很好地集成到提供JSF支持的IDE中去。

  盡管JSF帶來(lái)了標準用戶(hù)界面框架,但對于開(kāi)發(fā)第一個(gè)自定義JSF組件而言,還是存在幾個(gè)缺陷和漏洞。讓我們看看怎樣創(chuàng )建一個(gè)純HTML無(wú)法輕松創(chuàng )建的圖形JSF組件。圖形JSF組件的特點(diǎn)不僅要求生成DHTML,而且還需要對圖像生成和客戶(hù)端交互提供補充支持。我們將以一個(gè)圖形組件的例子來(lái)闡述這些特點(diǎn)。該圖形組件能夠提供曲線(xiàn)圖,并為各種客戶(hù)端導航和交互提供便利。我們還會(huì )了解到將該圖形組件集成到JSF-enabled IDE中所需要的步驟。通過(guò)理解圖形組件的設計方法,您將會(huì )更好地理解如何實(shí)現JSF組件,而這應該能使您開(kāi)發(fā)出定制的JSF圖形組件。

什么是JSF?

  JSF是一種能夠簡(jiǎn)化Web應用程序表示層結構的標準服務(wù)器端框架。定義JSF框架的JSR 127(參見(jiàn)參考資料)帶有一個(gè)能提供基本UI組件(如輸入欄和按紐)的參考實(shí)現。您可以將可重用用戶(hù)界面組件集中起來(lái)創(chuàng )建Web頁(yè),將這些組件綁定到應用數據源上,并用服務(wù)器端事件控制程序處理客戶(hù)端事件。根據說(shuō)明書(shū)介紹,組件供應商能編寫(xiě)與JSF運行時(shí)框架集成的組件,并將其集成到在設計時(shí)與JSF兼容的IDE中去。

  從很大程度上講,JSF組件同在HTML 2.0技術(shù)要求下可用的HTML組件和標簽直接相符合。對許多Web應用程序而言,這套相對簡(jiǎn)單的組件是夠用的。然而,許多應用程序如監管或監控程序需要更復雜的數據顯示與交互,比如制表、制圖和映射。由于JSF組件在HTML中直接提交復雜圖形小部件的能力有限,所以設計這些高級組件的能力并不突出。解決方案要求服務(wù)器端組件向客戶(hù)傳輸圖像,卻會(huì )給自身帶來(lái)問(wèn)題,因為在基本HTML圖像上進(jìn)行交互要受到限制。最后,使用JavaScript時(shí),必須能調用客戶(hù)端交互來(lái)使用戶(hù)能對數據進(jìn)行導航和交互。

  讓我們看看開(kāi)發(fā)一個(gè)簡(jiǎn)單的、將CSS輸入HTML頁(yè)面的JSF組件需要哪些步驟。當開(kāi)發(fā)高級JSF圖形組件時(shí),這一簡(jiǎn)單組件的描述和代碼樣本會(huì )作為背景。圖1顯示了如何使用即將開(kāi)發(fā)的組件,并顯示將要得到的結果。使用這種組件的好處是能夠通過(guò)改變某個(gè)JSF動(dòng)作的組件值,來(lái)改變整個(gè)頁(yè)面的外觀(guān)。

圖1:顯示了我們如何使用一個(gè)非常簡(jiǎn)單的JSF組件將CSS輸入某個(gè)HTML頁(yè)面并得出結果。

開(kāi)發(fā)組件

  JSF組件包含若干個(gè)Java類(lèi)和配置文件。為創(chuàng )建一個(gè)自定義JSF組件,您需要開(kāi)發(fā)一個(gè)擴展JSF基本組件類(lèi)的Java類(lèi);為默認呈現軟件包開(kāi)發(fā)呈現程序;開(kāi)發(fā)一個(gè)將在JSP頁(yè)面中用于描述標簽的Java類(lèi);編寫(xiě)一個(gè)標簽庫定義(TLD)文件;編寫(xiě)JSF配置文件。讓我們更深入地了解這5個(gè)步驟。

  開(kāi)發(fā)組件Java類(lèi)。組件類(lèi)負責管理代表組件狀態(tài)的屬性。因此,我們必須根據組件的行為(如輸入組件或輸出組件),給組件選擇適當的基類(lèi)(參見(jiàn)清單1)。這里描述的組件可進(jìn)行擴展javax.faces.component.UIOutput,以顯示指向某個(gè)樣式表文件的URL,或內聯(lián)式樣式表的內容。該組件可用于在JSF動(dòng)作中將某個(gè)樣式表轉換成另一個(gè)樣式表。關(guān)聯(lián)屬性規定著(zhù)值的類(lèi)型:要么是一個(gè)URL,要么是內聯(lián)樣式。該組件還必須能夠在向服務(wù)器發(fā)送請求期間,使用經(jīng)過(guò)JSF框架處理的對象,來(lái)存儲并修復自己的狀態(tài)。組件的狀態(tài)由重建對象所需的重要屬性值組成。JSF框架自動(dòng)調用saveState()和restoreState()方法,我們可以在組件中實(shí)現這兩種方法來(lái)達到這一目標。

清單1. 組件類(lèi)管理顯示組件狀態(tài)的屬性??梢罁M件的行為,為其選擇一個(gè)適當的基類(lèi)。在本例中,該組件擴展javax.faces.component.UIOutput,以顯示指向某個(gè)樣式表文件的URL,或者某個(gè)內聯(lián)式樣式表的內容。

import javax.faces.component.*;public class CSSComponent extends UIOutput {	private Boolean link; 	public String getFamily() { 		return "faces.CSSFamily"; 	} 	public boolean isLink() { 		if (link != null) 			return link.booleanValue(); 			ValueBinding vb = getValueBinding("link"); 	if (vb != null) { 		Boolean bvb = (Boolean) vb.getValue(			FacesContext.getCurrentInstance()); 		if (bvb != null) 			return bvb.booleanValue(); 	} 	return false; 	} 	public void setLink(boolean link) { 		this.link = new Boolean(link); 	} 	public Object saveState(FacesContext context) { 		return new Object[] { super.saveState(context), 			link }; 	} 	public void restoreState(FacesContext context, 	Object stateObj) { 		Object[] state = (Object[]) stateObj; 		super.restoreState(context, state[0]); 		link = (Boolean) state[1]; 	} }

開(kāi)發(fā)呈現程序。呈現程序有兩個(gè)作用。第一,呈現程序負責發(fā)送適當的HTML程序段,該程序段能在客戶(hù)端中呈現組件。通常情況下,這個(gè)HTML程序段由一些適于呈現整個(gè)Web瀏覽器的HTML標簽組成。此JSF生存周期稱(chēng)作編碼階段或呈現—響應階段。該響應階段還能發(fā)送增強客戶(hù)端交互性的JavaScript代碼。

  呈現程序的第二個(gè)作用是解析來(lái)自客戶(hù)端的數據,從而對服務(wù)器端的組件狀態(tài)進(jìn)行更新(如用戶(hù)在文本字段輸入的文本)。標準呈現程序軟件包具有強制性,但也可以提供其他呈現程序軟件包,用于提供可替換的客戶(hù)端表示法或SVG之類(lèi)的語(yǔ)言(參見(jiàn)參考資料)。通過(guò)檢驗組件的連接屬性,您實(shí)現的呈現程序(參見(jiàn)清單2)將選擇在HTML頁(yè)面中發(fā)送的CSS樣式。

清單2. 標準呈現程序軟件包具有強制性,但是,您可以使用其他呈現程序軟件包,來(lái)提供可替換的客戶(hù)端表示法或語(yǔ)言。通過(guò)檢驗組件的連接屬性,您實(shí)現的呈現程序將選擇在HTML頁(yè)面中發(fā)出的CSS樣式。

import javax.faces.component.UIComponent;import javax.faces.context.FacesContext;import javax.faces.context.ResponseWriter;import javax.faces.render.Renderer;public class CSSRenderer extends Renderer {public void encodeEnd(FacesContext context,UIComponent component)	throws IOException {		super.encodeEnd(context, component);		if (component instanceof CSSComponent) {			CSSComponent cssComponent  =				(CSSComponent) component;			String css = (String)cssComponent.getValue();			boolean isLink = cssComponent.isLink();			if (css != null) 				if (isLink)  				context.getResponseWriter().write(				"<link type=‘text/css‘ rel=‘stylesheet‘ 				href=‘" + css + "‘/>");			else 				context.getResponseWriter().write(					"<style>;\n" + css + "\n<style/>\n"); 		}	}}

開(kāi)發(fā)標簽類(lèi)。同樣,JSF框架提供了用于擴展的基類(lèi),來(lái)編寫(xiě)與組件相關(guān)的標簽。該標簽類(lèi)負責定義并呈現將在faces-config.xml文件中應用的組件樣式(這種樣式的描述很簡(jiǎn)短)。它還負責創(chuàng )建JSF組件(由JSF框架來(lái)處理),傳遞JSF標簽中所包含的屬性,該屬性用于初始化組件(參見(jiàn)清單3)。

清單3. 該標簽類(lèi)定義了將在faces-config.xml文件中應用的組件的樣式和組件呈現方式。

import javax.faces.webapp.UIComponentTag;public class CSSTag 	extends UIComponentTag {	private String value;	private String link;	public String getComponentType() {		return "faces.CSSComponent";	}	public String getRendererType() {		return “HTML.LinkOrInlineRenderer";	}	protected void setProperties(UIComponent component) {		super.setProperties(component);		Application app = 			getFacesContext().getApplication();		if (value != null)			if (isValueReference(value)) 				component.setValueBinding("value", 				app.createValueBinding(value));			else				component.getAttributes().put("value", value);		if (link != null) 			if (isValueReference(link))				component.setValueBinding("link",				app.createValueBinding(link));			else				component.getAttributes().put("link",				new Boolean(link));	}	public String getLink() {		return link;	}	public void setLink(String link) {		this.link = link;	}	public String getValue() {		return value;	}	public void setValue(String value) {		this.value = value;	}}

  該標簽提供setter和getter來(lái)管理鏈接和值屬性。組件一旦創(chuàng )建,便會(huì )調用setProperties()方法,對標簽屬性進(jìn)行初始化。每個(gè)標簽屬性都無(wú)外乎兩種:要么是文字值,要么是bean屬性的一個(gè)綁定。

編寫(xiě)標簽庫定義(TLD)。TLD是一個(gè)XML文件,它通過(guò)將標簽名與相應的Java類(lèi)相關(guān)聯(lián)來(lái)描述標簽。TLD還描述了標簽所允許的屬性(參見(jiàn)清單4)。這個(gè)TLD定義了一個(gè)名為css的標簽,該標簽綁定到CSSTag類(lèi)。它還聲明了鏈接和值標簽屬性。

清單4. TLD是一個(gè)通過(guò)將標簽名與相應的Java類(lèi)相關(guān)聯(lián)來(lái)描述標簽的XML文件。TLD定義了名為css的標簽,使其與CSSTag類(lèi)綁定。它還聲明了鏈接和值標簽屬性。

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE taglib PUBLIC 	"-//Sun Microsystems, Inc.//	DTD JSP Tag Library  1.2//EN" 	"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"><taglib>	<tlib-version>1.0</tlib-version>	<jsp-version>1.2</jsp-version>	<short-name>custom</short-name>	<uri>http://www.ilog.com/jviews/tlds/css.tld</uri>	<description>This tag library contains a tag for a 		sample custom JSF Component.</description>	<tag>		<name>css</name>		<tag-class>path.to.CSSTag</tag-class>		<description>A component that displays the style 			inline or a link a to a css file</description>		<attribute>			<name>id</name>			<required>false</required>			<rtexprvalue>false</rtexprvalue>			<type>java.lang.String</type>			<description>The id of this component.			</description>		</attribute>		<attribute>			<name>binding</name>			<required>false</required>			<rtexprvalue>false</rtexprvalue>			<type>java.lang.String</type>			<description>The value binding expression 				linking this component to a property in a				backing bean. If this attribute is set, the 				tag does not create the component itself but				retrieves it from the bean property. This				attribute must be a value binding.			</description>		</attribute>		<attribute>			<name>value</name>			<required>true</required>			<rtexprvalue>false</rtexprvalue>			<type>java.lang.String</type>			<description>The inline css text or the url to 				the css file to link.</description>		</attribute>		<attribute>			<name>link</name>			<required>false</required>			<rtexprvalue>false</rtexprvalue>			<type>java.lang.String</type>			<description>Whether the value is a link or 				the inline style.</description>		</attribute>	</tag></taglib>

編寫(xiě)JSF配置文件。為了將某個(gè)JSF組件集成到框架中,您必須提供一個(gè)名為faces-config.xml的配置文件。該文件將組件類(lèi)型和呈現程序類(lèi)型(用于JSP定制標簽處理程序)與對應的Java類(lèi)關(guān)聯(lián)起來(lái)。它還能描述與每個(gè)組件一同使用的呈現程序(參見(jiàn)清單5)。該文件定義了faces.CSSFamily組件家族。在本例中,該家族由faces.CSSComponent這一個(gè)組件類(lèi)型(該類(lèi)型與CSSComponent類(lèi)綁定)組成。最后,HTML.LinkOrInlineRenderer類(lèi)型的呈現程序(由CSSComponent類(lèi)實(shí)現)要與faces.CSSFamily家族相關(guān)聯(lián)。

清單5. 該文件將組件類(lèi)型和呈現程序類(lèi)型與對應的Java類(lèi)聯(lián)系起來(lái),并描述與每個(gè)組件一同使用的呈現程序。它還定義了faces.CSSFamily組件家族。
<!DOCTYPE faces-config PUBLIC 	"-//Sun Microsystems, Inc.//	DTD JavaServer Faces Config 1.0//EN" 	"http://java.sun.com/dtd/web-facesconfig_1_0.dtd"><faces-config>	<component>		<component-type>faces.CSSComponent		</component-type>		<component-class>path.to.CSSComponent		</component-class>		<component-extension>			<component-family>faces.CSSFamily			</component-family>			<renderer-type>HTML.LinkOrInlineRenderer			</renderer-type>		</component-extension>	</component>	<render-kit>		<renderer>			<component-family>faces.CSSFamily			</component-family>			<renderer-type> HTML.LinkOrInlineRenderer 			</renderer-type>			<renderer-class>path.to.CSSRenderer			</renderer-class>		</renderer>	/render-kit></faces-config>

開(kāi)始制圖

  如果您希望將自己的組件集成到JSF-enabled IDE中,您還可以提供補充說(shuō)明。比如說(shuō),除提供其他的設計時(shí)信息外,還可以提供一個(gè)名為sun-faces-config.xml的XML配置文件,用于描述應在IDE中公開(kāi)的組件屬性。

  既然已經(jīng)看到如何創(chuàng )建一個(gè)簡(jiǎn)單的JSF組件,不妨再來(lái)看看怎樣創(chuàng )建一個(gè)圖形JSF組件。我們將遵循同樣的基本步驟來(lái)設計一個(gè)高級JSF圖形組件。讓我們以一個(gè)圖形組件(如ILOG JSF圖形組件)為例,通過(guò)一組分類(lèi),該組件為數據值分布提供了可視化表示。該圖形能夠以條型統計圖、圓形分格統計圖和氣泡式統計圖等各種顯示方法來(lái)顯示數據集合。該JSF圖形組件有兩個(gè)初始設計限制:

  我們已經(jīng)擁有Java圖形bean組件,它具備所有圖形顯示能力。該組件可以顯示很多圖形,而且可定制性很高。在理想情況下,我們希望利用bean組件,使用它的功能來(lái)構成我們的JSF組件的基礎。

  普通JSF應用程序需要重新載入整個(gè)頁(yè)面以更新視圖。這種方法適合基于表單的應用程序,但在很多情況下卻不適用于高度圖形化的用戶(hù)界面。因此,我們的JSF圖形組件必須能在不更新整個(gè)頁(yè)面的前提下處理某些簡(jiǎn)單的導航,以提供更好的用戶(hù)體驗。

  以下是滿(mǎn)足這些需求的解決方案:該JSF圖形組件將管理圖形bean組件,包括創(chuàng )建圖形bean、定制該bean以及使該bean可用于服務(wù)器端操作。呈現JSF組件將分為兩個(gè)階段完成。JSF呈現程序會(huì )產(chǎn)生一個(gè)<img>標簽和一套JavaScript對象(參見(jiàn)圖2)??蛻?hù)端將請求服務(wù)器發(fā)回一張圖像。這一請求由某個(gè)servlet完成,該servlet獲得圖形bean,并利用圖形提供的方法生成一幅圖像(參見(jiàn)圖3)。任何只改變該圖形外觀(guān)的進(jìn)一步用戶(hù)交互(放大、掃視、更改樣式表等)都會(huì )引起圖形的一次增量更新。如果客戶(hù)端不只是要求對圖形圖像進(jìn)行更新,那么將提交該頁(yè)面(參見(jiàn)圖4)。

  圖2JSF圖形組件管理圖形bean組件,包括創(chuàng )建圖形bean、對其進(jìn)行定制,并使其可用于服務(wù)器端動(dòng)作。JSF呈現程序生成一個(gè)<img>標簽和一套JavaScript對象。

  圖3 客戶(hù)機通過(guò)servlet要求服務(wù)器獲得一張圖像。該servlet獲得圖形bean,并通過(guò)由圖形提供的方法生成一幅圖像。

  圖4如果客戶(hù)端不只是要求對圖形外觀(guān)的進(jìn)行更新,那么頁(yè)面將被提交。

  JSF圖形組件還配有一套附加的JSF組件。overview可顯示該圖形整體視圖,顯示一個(gè)代表圖形視圖的長(cháng)方形,還應允許用戶(hù)掃描可視區域。legend組件可顯示數據集合的相關(guān)信息,還能自行在圖形中顯示,依被顯示數據的樣式而定。也能提供客戶(hù)端的interactors如掃描和放大,這些功能可看成是客戶(hù)端交互,表示與圖形的交互不會(huì )像一次正常的JSF交互那樣重新載入整個(gè)頁(yè)面。

  要想呈現圖形組件,只需使用chartView標簽:

<jvcf:chartView id="c" style="width:500px;height:300px" … />

  該數據在HTML頁(yè)面中作為圖像顯示。該圖像由servlet創(chuàng )建,旨在響應一次HTTP請求(該請求包括指定結果圖像、生成圖像映射以及生成內聯(lián)式圖例等各種參數)。結果圖像隨之被嵌入客戶(hù)端DOM,頁(yè)面中只有圖像自身這一部分被更新。

應用程序核心部件

  讓我們看看簡(jiǎn)單的定制JSF組件和高級圖形組件之間的一些區別。JSF圖形組件類(lèi)很像一個(gè)標準組件,不過(guò)是多了一個(gè)可訪(fǎng)問(wèn)圖形bean(該圖形bean負責生成在HTML頁(yè)面中顯示的圖像)的圖形屬性。JSF組件可以通過(guò)某個(gè)綁定值或在當前會(huì )話(huà)中對這個(gè)圖形bean進(jìn)行局部檢索。當JSF圖形組件成為某個(gè)應用程序的核心部件時(shí),可選的JSF組件(如概覽或圖例)便與主圖形相關(guān)聯(lián),來(lái)顯示附加信息(見(jiàn)清單6)。

清單6. 當JSF圖形組件成為某個(gè)應用程序的核心部件時(shí),可選的JSF組件便與主圖形相關(guān)聯(lián),來(lái)顯示附加信息。

<jvcf:chartZoomInteractor id="chartZoomInteractor" 	XZoomAllowed="true" 	YZoomAllowed="true" /> <jvcf:chartView id="chartView" 						 chart="#{myBean.chart}" 					 servlet="demo.ImageMapServlet" 			interactorId="chartZoomInteractor" 						 width="500" 						height="300" 			 styleSheets="/data/line.css" 			waitingImage="data/images/wait.gif" 			 imageFormat="PNG"  /><jvcf:chartOverview id="chartOverview" 					style="height:100;width:150px" 						viewId="chartView" 						lineWidth="3" 						lineColor="red" /><jvcf:chartLegend id="legendView" 							viewId="chartView" 							 width="400" 							height="180" 							layout="vertical" 				waitingImage="data/images/wait.gif" />

  呈現程序是實(shí)現這個(gè)JSF的一大難點(diǎn)。如前所述,呈現程序并不生成簡(jiǎn)單的HTML,而是生成由HTML(<IMG> tag)和JavaScript proxy(代理程序)組成的動(dòng)態(tài)HTML(DHTML)。

  Proxy是一個(gè)負責管理客戶(hù)機組件圖像顯示的JavaScript類(lèi)實(shí)例。該對象是服務(wù)器端Java組件類(lèi)在客戶(hù)端顯示;它與組件類(lèi)具有相同屬性。頁(yè)面上的每個(gè)組件、圖形及其配件都有一個(gè)proxy實(shí)例。呈現JavaScript時(shí),在每個(gè)可視的JavaScript變量上使用facesContext.getExternalContext().encodeNamespace(name)方法是個(gè)很好的實(shí)踐。這樣做在今后方便地將組件集成到到JSR 168-compliant端口環(huán)境中。

  為舉例說(shuō)明客戶(hù)機上的proxy,必須在頁(yè)面上導入JavaScript支持庫。為保持客戶(hù)端盡量瘦,需要基于JavaScript庫支持的proxy類(lèi),對JavaScript庫進(jìn)行模塊化。因此,需要給每個(gè)proxy類(lèi)輸入一套不同的、有可能重疊的庫。圖形呈現的困難部分,出現在發(fā)送這些script庫的階段。每個(gè)組件的呈現程序都要聲明自己需要哪個(gè)庫,以及什么時(shí)候發(fā)送引用的庫,必須認清已發(fā)送的庫,以避免重復。僅在頁(yè)面呈現期間的存在script管理器負責這項篩選工作。每當呈現程序想要發(fā)送整套庫輸入時(shí),它都會(huì )向篩選出已發(fā)送庫的script管理器提供列表。

  客戶(hù)端proxy的目的在于允許編寫(xiě)腳本,并避免不必要的頁(yè)面更新。一旦呈現了圖形,在客戶(hù)端便可使用proxy,以便動(dòng)態(tài)安裝interactor,并顯示或隱藏圖像映射。Proxy對象也可供支持JavaScript鼠標事件處理的常規JSF組件使用。

<jvcf:chartView id=	"chartView" .. /><h:selectBooleanCheckbox id=	"genImageMap" onclick=	"chartView.setGenerateImageMap(	this.checked ? true : false,  true);" />

  對組件客戶(hù)端proxy進(jìn)行局部修改的問(wèn)題在于,其狀態(tài)不再與服務(wù)器上的Java組件的狀態(tài)同步。為解決這個(gè)問(wèn)題,proxy使用一個(gè)隱藏的輸入標簽(<INPUT TYPE="HIDDEN">)來(lái)保存客戶(hù)機上的新?tīng)顟B(tài)。當執行某個(gè)標準JSF動(dòng)作并提交頁(yè)面時(shí),呈現程序將解析該隱藏狀態(tài),使客戶(hù)機與服務(wù)器同步。這種行為需要呈現程序類(lèi)中有專(zhuān)門(mén)的破解行為。標準破解方法得以改進(jìn),以便解析來(lái)自客戶(hù)機的狀態(tài),并更新服務(wù)器端組件的狀態(tài)。

測試實(shí)例

  圖形及其相關(guān)組件之間的關(guān)聯(lián)由標記引用與綁定來(lái)完成。為使頁(yè)面設計具有靈活性,一個(gè)組件可以在呈現之前被引用。因此,在呈現時(shí)間內,如果某個(gè)組件屬性引用另一個(gè)尚未呈現的組件,那么,將延遲發(fā)送依賴(lài)于客戶(hù)機進(jìn)行解決的JavaScript代碼,直到呈現已引用的組件。此工作可由依賴(lài)性管理器完成。

為證實(shí)這一點(diǎn),不妨看一個(gè)典型實(shí)例,該實(shí)例涉及某個(gè)概覽,該概覽引用一張圖形。

<jvcf:overview viewId=	"chart" [...] /> <jvcf:chartView id=	"chart" [....] />

  存在兩種情況。被引用圖形組件已經(jīng)呈現,因此不存在任何問(wèn)題

JSP:<jvcf:chartView id=	"chart" [....] /><jvcf:overview viewId=	"chart" id="overview" [...] /> render:[...]var chart = 	new IlvChartViewProxy ( .. );[...]var overview= 	new IlvFacesOverviewProxy (	 .. );overview.setView(chart);[...]

  已引用圖形的組件在依賴(lài)的概覽組件之前不會(huì )呈現。既然如此,可在依賴(lài)性管理器上注冊一個(gè)組件創(chuàng )建監視器。已引用圖形組件最終呈現時(shí),其呈現程序會(huì )通知自己創(chuàng )建的依賴(lài)性管理器。此時(shí),將發(fā)送解決依賴(lài)性所需的代碼:

JSP:<jvf:overview viewId=	"chart" id="overview" [...] /> <jvdf:chartView id=	"chart" [....] />render:[...]var overview = 	new IlvFacesOverviewProxy (	 .. );[...]var chart = 	new IlvChartViewProxy ( .. );overview.setView(chart);[...]

  開(kāi)發(fā)JSF組件的目的之一,是能夠將它們應用于任何與JSF兼容的IDE。盡管如此,JSF兼容性并不足以保證這種設計時(shí)集成將會(huì )有效。下面是在開(kāi)發(fā)JSF組件過(guò)程中,為了便于在今后與IDE集成需要注意的一些簡(jiǎn)單思想:

  首先,定制JSF組件應該提供一個(gè)基本HTML呈現程序。在設計時(shí),JSF IDE不能呈現請求有效數據或app服務(wù)器連接的動(dòng)態(tài)圖形組件。因此,帶有復雜的或非傳統的(比如不是HTML)呈現程序的組件,應該使用Beans.isDesignTime()來(lái)確定是提供一個(gè)基本HTML表示法,還是提供真正的組件呈現程序。

  另一個(gè)設計時(shí)問(wèn)題是組件的位置和大小。不同IDE使用不同的標志和屬性。能夠調整大小的組件(如一幅圖像)應能處理定義大小的不同方式。

  最后,為了與IDE集成,組件必須提供尚未被JSF說(shuō)明定義的補充信息。遺憾的是,當前每個(gè)IDE都需要特殊處理程序來(lái)集成組件,即:在一種情況就需要XML文件,而在另一種情況下需要eclipse插件,如此等等。下一個(gè)JSF JSR(2.0版)的主要目的之一,將是指定附加的元數據格式。

  如您所見(jiàn),編寫(xiě)一個(gè)簡(jiǎn)單的JSF組件并不難,因為框架已經(jīng)完成了大部分工作。JSF框架管理著(zhù)組件狀態(tài)、呈現程序等等。在本文中,我們已經(jīng)擴展了這些基本概念,來(lái)設計一個(gè)能夠顯示復雜元數據、提供增量更新、支持大量客戶(hù)端交互并與配套組件協(xié)作的高級圖形JSF組件。支持這些特點(diǎn)需要對基本JSF組件的結構進(jìn)行許多改進(jìn)。當然,增量更新的概念今后對JSF框架將是一個(gè)很好的完善,因為它只允許呈現頁(yè)面已改變的部分,避免了更新整個(gè)頁(yè)面。按照JSF說(shuō)明書(shū)工作往往不足以確保組件完全集成到JSF IDE中;一個(gè)新JSR應能及時(shí)解決這些難題。盡管存在缺陷,JSF框架仍能極大地加快Web組件開(kāi)發(fā)速度、方便的融合來(lái)自各種資源的組件,以創(chuàng )建完整的、復雜的Web應用程序。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
JSF,早晨八九點(diǎn)鐘的太陽(yáng)冉冉升起
集成JSP/JSF和XML/XSLT
JSP和JSF合并 共同打造完美的Web應用
聯(lián)合使用 CSS、JavaScript 和 JSF 精心打造 Ajax 應用程序,第 1 部分: 增強 JSF 頁(yè)面的外觀(guān)
Matrix - 與 Java 共舞 - [翻譯]JSF(JavaServer Faces) 介紹(jsp/servlet 技術(shù))
NetBeans或吞并Creator 同室操戈為哪般?
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久