亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 組件卷標(biāo).htm

?? 這是一本關(guān)于JSF的入門書籍
?? HTM
字號(hào):
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>新建網(wǎng)頁(yè) 1</title>
</head>

<body>

<p>組件卷標(biāo)</p>
<div id="PageContent">
	<table cellSpacing="0" cellPadding="0" width="100%" border="0" id="table3">
		<tr>
			<td class="pagebody" vAlign="top">
			<table style="CLEAR: both" cellSpacing="0" cellPadding="0" width="100%" border="0" id="table4">
				<tr>
					<td class="pagecontent" vAlign="top" width="100%">
					<div class="wiki-content">
						完成Component的自訂,接下來(lái)要設(shè)定一個(gè)自訂Tag與之對(duì)應(yīng),自訂Tag的目的,在于設(shè)定
						Component屬性,取得Componenty型態(tài),取得Renderer型態(tài)值等;屬性的設(shè)定包括了設(shè)定靜態(tài)值、設(shè)定綁定值、設(shè)定驗(yàn)證器等等。<p>
						  要自訂與Component對(duì)應(yīng)的Tag,您可以繼承UIComponentTag,例如:</p>
						<div class="code" style="BORDER-TOP-STYLE: solid; BORDER-RIGHT-STYLE: solid; BORDER-LEFT-STYLE: solid; BORDER-BOTTOM-STYLE: solid">
							<div class="codeHeader" style="BORDER-BOTTOM-STYLE: solid">
								<b>TextWithCmdTag.java</b></div>
							<div class="codeContent">
								<pre class="code-java"><span class="code-keyword">package</span> onlyfun.caterpillar;

 <span class="code-keyword">import</span> javax.faces.application.Application;
 <span class="code-keyword">import</span> javax.faces.component.UIComponent;
 <span class="code-keyword">import</span> javax.faces.context.FacesContext;
 <span class="code-keyword">import</span> javax.faces.el.ValueBinding;
 <span class="code-keyword">import</span> javax.faces.webapp.UIComponentTag;

 <span class="code-keyword">public</span> class TextWithCmdTag <span class="code-keyword">extends</span> UIComponentTag {
    <span class="code-keyword">private</span> <span class="code-object">String</span> size;
    <span class="code-keyword">private</span> <span class="code-object">String</span> value;

    <span class="code-keyword">public</span> <span class="code-object">String</span> getComponentType() {
        <span class="code-keyword">return</span> <span class="code-quote">&quot;onlyfun.caterpillar.TextWithCmd&quot;</span>;
    }

    <span class="code-keyword">public</span> <span class="code-object">String</span> getRendererType() {
        <span class="code-keyword">return</span> <span class="code-keyword">null</span>;
    }

    <span class="code-keyword">public</span> void setProperties(UIComponent component) {
        <span class="code-keyword">super</span>.setProperties(component);

        setStringProperty(component, <span class="code-quote">&quot;size&quot;</span>, size);
        setStringProperty(component, <span class="code-quote">&quot;value&quot;</span>, value);
    }

    <span class="code-keyword">private</span> void setStringProperty(UIComponent component,
                       <span class="code-object">String</span> attrName, <span class="code-object">String</span> attrValue) {
        <span class="code-keyword">if</span>(attrValue == <span class="code-keyword">null</span>)
            <span class="code-keyword">return</span>;

        <span class="code-keyword">if</span>(isValueReference(attrValue)) {
            FacesContext context =
                         FacesContext.getCurrentInstance();
            Application application =
                         context.getApplication();
            ValueBinding binding =
                   application.createValueBinding(attrValue);
            component.setValueBinding(attrName, binding);
        }
        <span class="code-keyword">else</span> {
            component.getAttributes().
                          put(attrName, attrValue);
        }
    }

    <span class="code-keyword">public</span> void release() {
        <span class="code-keyword">super</span>.release();
        size = <span class="code-keyword">null</span>;
        value = <span class="code-keyword">null</span>;
    }

    <span class="code-keyword">public</span> <span class="code-object">String</span> getSize() {
        <span class="code-keyword">return</span> size;
    }

    <span class="code-keyword">public</span> void setSize(<span class="code-object">String</span> size) {
        <span class="code-keyword">this</span>.size = size;
    }

    <span class="code-keyword">public</span> <span class="code-object">String</span> getValue() {
        <span class="code-keyword">return</span> value;
    }

    <span class="code-keyword">public</span> void setValue(<span class="code-object">String</span> value) {
        <span class="code-keyword">this</span>.value = value;
    }
 }</pre>
							</div>
						</div>
						<p>  首先看到這兩個(gè)方法:</p>
						<div class="code" style="BORDER-TOP-STYLE: solid; BORDER-RIGHT-STYLE: solid; BORDER-LEFT-STYLE: solid; BORDER-BOTTOM-STYLE: solid">
							<div class="codeContent">
								<pre class="code-java"><span class="code-keyword">public</span> <span class="code-object">String</span> getComponentType() {
        <span class="code-keyword">return</span> <span class="code-quote">&quot;onlyfun.caterpillar.TextWithCmd&quot;</span>;
    }

    <span class="code-keyword">public</span> <span class="code-object">String</span> getRendererType() {
        <span class="code-keyword">return</span> <span class="code-keyword">null</span>;
    }</pre>
							</div>
						</div>
						<p>
						  由于我們的Component目前不使用Renderer,所以getRendererType()傳回null值,而
						getComponentType()在于讓JSF取得這個(gè)Tag所對(duì)應(yīng)的Component,所傳回的值在faces-config.xml中要有定義,例如:</p>
						<div class="code" style="BORDER-TOP-STYLE: solid; BORDER-RIGHT-STYLE: solid; BORDER-LEFT-STYLE: solid; BORDER-BOTTOM-STYLE: solid">
							<div class="codeContent">
								<pre class="code-java">....
 &lt;component&gt;
    &lt;component-type&gt;
        onlyfun.caterpillar.TextWithCmd
    &lt;/component-type&gt;
    &lt;component-class&gt;
        onlyfun.caterpillar.UITextWithCmd
    &lt;/component-class&gt;
 &lt;/component&gt;
 ....</pre>
							</div>
						</div>
						<p>  藉由faces-config.xml中的定義,JSF可以得知
						onlyfun.caterpillar.TextWithCmd的真正類別,而這樣的定義方式很顯然的,您可以隨時(shí)換掉&lt;component-
						class&gt;所對(duì)應(yīng)的類別,也就是說(shuō),Tag所對(duì)應(yīng)的Component是可以隨時(shí)替換的。</p>
						<p>
						  在設(shè)定Component屬性值時(shí),可以由component.getAttributes()取得Map對(duì)象,并將卷標(biāo)屬性值存入Map
						中,這個(gè)Map對(duì)象可以在對(duì)應(yīng)的Component中使用getAttributes()取得,例如在上一個(gè)主題中的UITextWithCmd中可以如下取得存入Map的size屬性:</p>
						<div class="code" style="BORDER-TOP-STYLE: solid; BORDER-RIGHT-STYLE: solid; BORDER-LEFT-STYLE: solid; BORDER-BOTTOM-STYLE: solid">
							<div class="codeHeader" style="BORDER-BOTTOM-STYLE: solid">
								<b>UITextWithCmd.java</b></div>
							<div class="codeContent">
								<pre class="code-java"><span class="code-keyword">package</span> onlyfun.caterpillar;

 <span class="code-keyword">import</span> java.io.IOException;
 <span class="code-keyword">import</span> java.util.Map;

 <span class="code-keyword">import</span> javax.faces.component.UIInput;
 <span class="code-keyword">import</span> javax.faces.context.FacesContext;
 <span class="code-keyword">import</span> javax.faces.context.ResponseWriter;

 <span class="code-keyword">public</span> class UITextWithCmd <span class="code-keyword">extends</span> UIInput {
    ....
    <span class="code-keyword">private</span> void encodeTextField(ResponseWriter writer,
                        <span class="code-object">String</span> clientId) <span class="code-keyword">throws</span> IOException {
        ....

        <span class="code-object">String</span> size = (<span class="code-object">String</span>) getAttributes().get(<span class="code-quote">&quot;size&quot;</span>);
        <span class="code-keyword">if</span>(size != <span class="code-keyword">null</span>) {
            writer.writeAttribute(<span class="code-quote">&quot;size&quot;</span>, size, <span class="code-keyword">null</span>);
        }
        .....
    }
    ....
 }</pre>
							</div>
						</div>
						<p>  可以使用isValueReference()來(lái)測(cè)試是否為JSF Expression
						Language的綁定語(yǔ)法,如果是的話,則我們必須建立ValueBinding對(duì)象,并設(shè)定值綁定:</p>
						<div class="code" style="BORDER-TOP-STYLE: solid; BORDER-RIGHT-STYLE: solid; BORDER-LEFT-STYLE: solid; BORDER-BOTTOM-STYLE: solid">
							<div class="codeContent">
								<pre class="code-java">....
 <span class="code-keyword">private</span> void setStringProperty(UIComponent component,
                        <span class="code-object">String</span> attrName, <span class="code-object">String</span> attrValue) {
        <span class="code-keyword">if</span>(attrValue == <span class="code-keyword">null</span>)
            <span class="code-keyword">return</span>;

        <span class="code-keyword">if</span>(isValueReference(attrValue)) {
            FacesContext context =
                          FacesContext.getCurrentInstance();
            Application application =
                          context.getApplication();
            ValueBinding binding =
                   application.createValueBinding(attrValue);
            component.setValueBinding(attrName, binding);
        }
        <span class="code-keyword">else</span> {
            component.getAttributes().
                         put(attrName, attrValue);
        }
    }
 ....</pre>
							</div>
						</div>
						<p>  如果是value屬性,記得在上一個(gè)主題中我們提過(guò),從UIOutput繼承下來(lái)的getValue()方法可以取得
						Component的value設(shè)定值,這個(gè)值可能是靜態(tài)的屬性設(shè)定值,也可能是JSF
						Expression的綁定值,預(yù)設(shè)會(huì)先從組件的屬性設(shè)定值開始找尋,如果找不到,再?gòu)慕壎ㄖ担╒alueBinding對(duì)象)中找尋。</p>
						<p>  最后,我們必須提供自訂Tag的tld檔:</p>
						<div class="code" style="BORDER-TOP-STYLE: solid; BORDER-RIGHT-STYLE: solid; BORDER-LEFT-STYLE: solid; BORDER-BOTTOM-STYLE: solid">
							<div class="codeHeader" style="BORDER-BOTTOM-STYLE: solid">
								<b>textcmd.tld</b></div>
							<div class="codeContent">
								<pre class="code-java">&lt;?xml version=<span class="code-quote">&quot;1.0&quot;</span> encoding=<span class="code-quote">&quot;UTF-8&quot;</span>?&gt;
 &lt;taglib version=<span class="code-quote">&quot;2.0&quot;</span>
     xmlns=<span class="code-quote">&quot;http:<span class="code-comment">//java.sun.com/xml/ns/j2ee&quot;</span>
</span>     xmlns:xsi=<span class="code-quote">&quot;http:<span class="code-comment">//www.w3.org/2001/XMLSchema-instance&quot;</span>
</span> xsi:schemaLocation=
 <span class="code-quote">&quot;http:<span class="code-comment">//java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd&quot;</span>&gt;
</span> &lt;tlib-version&gt;1.0&lt;/tlib-version&gt;
 &lt;jsp-version&gt;2.0&lt;/jsp-version&gt;
 &lt;<span class="code-object">short</span>-name&gt;textcmd&lt;/<span class="code-object">short</span>-name&gt;
 &lt;uri&gt;http:<span class="code-comment">//caterpillar.onlyfun.net/textcmd&lt;/uri&gt;
</span>
 &lt;tag&gt;
     &lt;name&gt;textcmd&lt;/name&gt;
     &lt;tag-class&gt;onlyfun.caterpillar.TextWithCmdTag&lt;/tag-class&gt;
     &lt;body-content&gt;empty&lt;/body-content&gt;
     &lt;attribute&gt;
        &lt;name&gt;size&lt;/name&gt;
     &lt;/attribute&gt;
     &lt;attribute&gt;
        &lt;name&gt;value&lt;/name&gt;
        &lt;required&gt;<span class="code-keyword">true</span>&lt;/required&gt;
     &lt;/attribute&gt;
 &lt;/tag&gt;

 &lt;/taglib&gt;</pre>
							</div>
						</div>
					</div>
					</td>
				</tr>
			</table>
			</td>
		</tr>
	</table>
</div>

</body>

</html>

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产综合久久久久久久久久| 337p亚洲精品色噜噜狠狠| 亚洲一二三级电影| 久久久久久久网| 在线观看av一区| 粉嫩一区二区三区性色av| 天堂午夜影视日韩欧美一区二区| 国产精品网曝门| 2020国产精品| 欧美一区二区三区喷汁尤物| 99精品欧美一区| 成人h版在线观看| 九九国产精品视频| 日本中文字幕一区二区视频| 亚洲女人小视频在线观看| 久久久久久久久久电影| 日韩午夜在线观看视频| 欧美三级日本三级少妇99| www.欧美精品一二区| 国产精品乡下勾搭老头1| 麻豆成人91精品二区三区| 无码av免费一区二区三区试看| 亚洲天堂成人在线观看| 国产精品色在线| 欧美高清在线一区二区| 久久久久久久久久久久电影 | 国产亚洲1区2区3区| 337p亚洲精品色噜噜狠狠| 欧美日韩国产影片| 91国偷自产一区二区使用方法| eeuss鲁片一区二区三区在线看| 国产精品123| 狠狠色丁香久久婷婷综合_中| 久久综合综合久久综合| 久久99国内精品| 久久精品av麻豆的观看方式| 日韩av在线发布| 人妖欧美一区二区| 免费成人结看片| 久久99精品视频| 国产精品一区在线| 成人免费毛片片v| 成人av集中营| 色哟哟一区二区在线观看| 色综合天天综合狠狠| 欧美亚洲国产怡红院影院| 欧美亚洲国产怡红院影院| 欧美日韩高清不卡| 欧美一区二区三区四区久久| 日韩精品中文字幕在线不卡尤物 | 91老师片黄在线观看| 成人av综合一区| 一本久道久久综合中文字幕 | 精品嫩草影院久久| 精品sm捆绑视频| 国产日韩欧美麻豆| 亚洲国产电影在线观看| 亚洲激情在线激情| 日韩av一区二区在线影视| 韩国成人精品a∨在线观看| 国产精品一区二区果冻传媒| 成人午夜精品一区二区三区| 色悠久久久久综合欧美99| 91精品免费在线| 国产欧美日本一区二区三区| 伊人开心综合网| 欧美日韩中文字幕一区| 欧美一级高清大全免费观看| 久久嫩草精品久久久久| 国产精品久久久久久久久晋中| 亚洲啪啪综合av一区二区三区| 天天综合色天天| 国产成人精品亚洲日本在线桃色| 91小视频在线观看| 欧美精品99久久久**| 久久久蜜桃精品| 亚洲黄色av一区| 国模娜娜一区二区三区| 色婷婷综合在线| 欧美r级在线观看| 亚洲少妇中出一区| 久久激情五月婷婷| 成人精品鲁一区一区二区| 欧美日韩三级在线| 久久毛片高清国产| 午夜精品一区在线观看| 国产成人小视频| 欧美精品少妇一区二区三区 | 亚洲美女免费在线| 美女国产一区二区三区| 99视频精品全部免费在线| 日韩欧美一卡二卡| 一区二区三区精密机械公司| 韩国av一区二区三区| 欧美日韩一区二区三区高清| 中文字幕不卡在线| 久久国产免费看| 欧美区视频在线观看| 国产精品美女久久久久高潮| 蜜桃传媒麻豆第一区在线观看| 色婷婷综合久色| 国产亚洲一本大道中文在线| 日韩成人精品视频| 91激情五月电影| 国产精品色哟哟| 精品亚洲免费视频| 69p69国产精品| 亚洲午夜免费视频| 99在线精品观看| 欧美激情一区在线观看| 激情综合网激情| 欧美一二三在线| 午夜视频一区二区三区| 色综合久久久久网| 国产精品久久久久久久蜜臀| 国产精品一区在线观看乱码 | 99热99精品| 欧美激情一区二区| 国模大尺度一区二区三区| 日韩欧美色电影| 亚洲成人自拍网| 欧美日本不卡视频| 午夜av一区二区三区| 精品视频在线免费看| 亚洲小说欧美激情另类| 欧美亚一区二区| 亚洲一区二区三区爽爽爽爽爽 | 91麻豆国产自产在线观看| 欧美激情在线看| 成人免费的视频| 国产欧美一区二区三区在线看蜜臀| 精品一区二区三区免费观看 | 欧美视频日韩视频| 一区二区三区欧美亚洲| 日本久久一区二区三区| 一区二区三区日韩欧美精品 | 欧美自拍丝袜亚洲| 一区二区在线观看视频在线观看| 日本韩国一区二区| 亚洲视频 欧洲视频| 在线观看不卡一区| 午夜视频一区二区| 日韩视频免费观看高清在线视频| 麻豆精品久久久| 久久久午夜精品理论片中文字幕| 精久久久久久久久久久| 国产日韩欧美在线一区| 成人网在线播放| 亚洲免费观看高清完整版在线观看熊 | 欧美绝品在线观看成人午夜影视| 香港成人在线视频| 欧美变态凌虐bdsm| 国产一区二区三区精品欧美日韩一区二区三区| 日韩一区二区三| 国产又粗又猛又爽又黄91精品| 国产亚洲精品中文字幕| 91视视频在线观看入口直接观看www | 精品中文字幕一区二区| 精品国产91久久久久久久妲己 | 亚洲二区在线观看| 日韩精品一区二区在线观看| 国产传媒日韩欧美成人| 亚洲日本在线a| 欧美精品色综合| 国产激情偷乱视频一区二区三区| 亚洲私人黄色宅男| 欧美精品色综合| 高清国产一区二区三区| 亚洲综合色丁香婷婷六月图片| 欧美一区二区三级| 国产成人综合在线播放| 亚洲乱码日产精品bd| 日韩欧美一级特黄在线播放| 国产传媒日韩欧美成人| 亚洲一区中文在线| 久久久精品国产免大香伊| 在线看不卡av| 国产一区二区美女| 亚洲综合区在线| 久久这里只有精品6| 91成人网在线| 国产成人精品www牛牛影视| 亚洲午夜私人影院| 国产午夜精品一区二区三区嫩草 | 蜜臀av性久久久久蜜臀aⅴ流畅| 中文一区一区三区高中清不卡| 欧美喷潮久久久xxxxx| 国产99精品在线观看| 日韩中文字幕1| 亚洲视频综合在线| 久久综合九色综合久久久精品综合 | 亚洲制服丝袜av| 精品精品国产高清a毛片牛牛| 色综合久久天天综合网| 久久99精品国产麻豆不卡| 一级中文字幕一区二区| 亚洲国产精品成人综合| 日韩一卡二卡三卡四卡| 一本一道久久a久久精品综合蜜臀| 国产一区啦啦啦在线观看|