亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

JavaPub系列--webwork開(kāi)發(fā)指南-2

2019-11-18 14:23:38
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

5 Value Stack
5.1 VS是什么?
Value Stack(VS)是一個(gè)非常有用的類,可以用來(lái)支持ww的表達(dá)式語(yǔ)言(EL),通過(guò)它的findValue和test方法,分別用來(lái)計(jì)算值和條件表達(dá)式。VS為EL提供了管道,它具有瀏覽stack和flatten out對(duì)象的能力,來(lái)得到想要的數(shù)據(jù)。
5.2 如何使用
下列是客戶如何使用VS來(lái)滿足需要的部分范例:
? EL 使用 VS 來(lái)找到操作數(shù)的值.
? ServletDispatcher 將使用 VS 來(lái)將它自己壓棧,假如一個(gè) view 附加到一個(gè)Action. 在view顯示之后,這個(gè)對(duì)象將從棧中移去.
? Tags 使用 VS 來(lái)將值壓棧,所以在body的contents中可以訪問(wèn)這些值。例如: Iterator將next項(xiàng)放到棧內(nèi)以供body使用,當(dāng)達(dá)到結(jié)束的tag,這些值就從棧中移去。
? 對(duì)于 UI tags, 他們的父 ComponentTag 將自己壓棧,所以模版可以訪問(wèn)它的tag的值.
? BeanTag 將它自己壓棧以給body部分來(lái)訪問(wèn)它的值。
? i18nTag 將合適的資源包壓棧來(lái)找到正確的國(guó)際化的文本。.
? 等等. ...
一旦對(duì)象是在堆棧中,你就可以通過(guò)EL語(yǔ)法來(lái)訪問(wèn)他們的值,對(duì)于EL的細(xì)節(jié)請(qǐng)察看參考部分.
5.3 基本組成
Object findValue(String query)
這個(gè)方法是用來(lái)從帶有一個(gè)EL查詢的VS中找到一個(gè)值。 查詢是分段的,每段依次求值運(yùn)算each segment in turn is evaluated. 這個(gè)求值可能在棧上尋找一個(gè)合適的對(duì)象,并調(diào)用適當(dāng)?shù)姆椒ǎ瑏?lái)查找希望的值。結(jié)果是一個(gè)對(duì)象或者為null.
boolean test(String test)
這個(gè)方法用來(lái)解析一個(gè)條件表達(dá)式.條件的 tags if 和 elseIf 將調(diào)用這個(gè)方法來(lái)對(duì)條件語(yǔ)句進(jìn)行運(yùn)算.
ValueHolder (VH)
VH 是一個(gè)你可以實(shí)現(xiàn)的接口,答應(yīng)你對(duì)對(duì)象進(jìn)行l(wèi)azy賦值,當(dāng)VS找到它。例如:你可以創(chuàng)建一個(gè)實(shí)現(xiàn)了VH的匿名類并將哪個(gè)類壓棧,當(dāng)其他人找到這個(gè)對(duì)象,VS將調(diào)用這個(gè)類getValue()并返回值.
ValueStack getStack(PageContext context)
為PageContext 找到 ValueStack.假如找不到,將創(chuàng)建一個(gè)。對(duì)于每個(gè)PageContext只有一個(gè)stack,任何tag需要一個(gè)VS將調(diào)用這個(gè)方法.
ValueStack getStack(ServletRequest request)
為ServletRequest 找到ValueStack. 假如找不到,將創(chuàng)建一個(gè),對(duì)于每個(gè)ServletRequest只有一個(gè)stack與之對(duì)應(yīng)。任何一個(gè)servlet dispatcher 假如需要一個(gè) VS 將調(diào)用這個(gè)方法.
Object popValue()
一個(gè)對(duì)象出棧. 返回一個(gè)對(duì)象,假如棧為空,則返回null.
void pushValue(Object value)
將對(duì)象壓棧.
6 表達(dá)式語(yǔ)言EL
6.1 為什么需要EL?
表達(dá)式在今天的計(jì)算機(jī)科學(xué)中都可以發(fā)現(xiàn)。最聞名的例子是常規(guī)表達(dá)式,常規(guī)表達(dá)式是一種迷你型語(yǔ)言,答應(yīng)你用來(lái)描述和解釋文本,這是許多編程語(yǔ)言、編程環(huán)境、和程序的核心 。在如此多的領(lǐng)域都有常規(guī)表達(dá)式,是因?yàn)樗鼜?qiáng)大的功能。
常規(guī)表達(dá)式答應(yīng)你把握你的數(shù)據(jù),它是一種程序語(yǔ)言,讓你能夠控制數(shù)據(jù),并讓數(shù)據(jù)為你工作,讓你用一些簡(jiǎn)單的符號(hào)來(lái)解決一些原本需要復(fù)雜和麻煩的編程的問(wèn)題。
常規(guī)表達(dá)式是被開(kāi)發(fā)用來(lái)解決與文本處理相關(guān)的一系列非凡問(wèn)題的。 EL的設(shè)計(jì)是為了解決一系列與jsp有關(guān)的問(wèn)題。
所以我們來(lái)看一些范例,來(lái)強(qiáng)調(diào)一下普通的JSP和使用WW增強(qiáng)的JSP代碼的區(qū)別。
讀取數(shù)據(jù)的示例:
? 使用WW方式
? Number of guesses = <webwork:PRoperty value="guessBean/numGuesses"/>

? 純 JSP方式
? <%@ page import="webwork.action.test.NumberGuessBean"%>
? ...
? <jsp:useBean id="numguess" class="webwork.action.test.NumberGuessBean" scope="session"/>
? Number of guesses = <%= numguess.getNumGuesses()%>

EL 改善了代碼的可都性,在上面的例子中WW 調(diào)用Action的getGuessBean() 然后調(diào)用bean的 getNumGuesses() 。現(xiàn)在來(lái)比較這些精簡(jiǎn)的符號(hào)與第二個(gè)JSP列表. WW方式是更精簡(jiǎn),易于閱讀,表達(dá)得更清楚,我們不用擔(dān)心范圍、類、方法等,頁(yè)面設(shè)計(jì)者不應(yīng)該厭煩這些信息。
條件判定范例:
? WW方式
? <webwork:if test="guessBean/sUCcess==true"/>
? Congratulations! You got it.
? And after just <webwork:property value="guessBean/numGuesses"/> tires.<p>
? Not sure what to do here?
? Care to <a href="<webwork:url page="numguess.action?begin=true"/>">try again</a>?
? </webwork:if>

? 普通JSP 方式
? <% if (numguess.getSuccess()) { %>
? Congratulations! You got it.
? And after just <%= numguess.getNumGuesses() %> tries. <p>
? <% numguess.reset(); %>
? Not sure what to do here?
? Care to <a href="<%=response.encodeURL(numguess.jsp)%>"/>">try again</a>?
? <% } %>

在這個(gè)例子中,我們進(jìn)行了條件判定. WW 調(diào)用Action的 getGuessBean()然后調(diào)用 getSuccess() 來(lái)返回一個(gè)布爾值. 假如success的值為true,那么 條件體將被執(zhí)行. 同JSP寫法相比. WW方式很輕易閱讀,另外WW支持一個(gè)相等的條件運(yùn)算符。另外要注重WW如何來(lái)使用它自己的url tag來(lái)處理url編碼。
復(fù)雜數(shù)據(jù)范例:
? WW 方式
? <webwork:if test="bucket[′A1′]/bucket[′A2′]/bucket[′A3′]/empty==true"/>
? Success
? </webwork:if><br>

? 普通JSP 方式
? <% Map m = bucket.getbucket();
? Bucket A1 = (Bucket)m.get("A1");

? m = A1.getBucket();
? Bucket A2 = (Bucket)m.get("A2");

? m = A2.getBucket();
? Bucket A3 = (Bucket)m.get("A3");

? if (A3.isEmpty()) { %>
? Success
? <% } %><br>

這個(gè)例子中, 我們?cè)谔幚硪幌盗械?Map. 在用WW的方式中, bucket A1 被找到 retrieved, 然后在A1中找到 bucket A2 , 然后從A2中找到 bucket A3 ,最后調(diào)用 isEmpty(). 這種比JSP的例子中簡(jiǎn)潔得多.我們不用寫java代碼來(lái)展開(kāi)這些數(shù)據(jù). EL 給與了我們展開(kāi)一系列Maps的能力并查找到我們需要的數(shù)據(jù). 另外, 頁(yè)面設(shè)計(jì)人員不用擔(dān)心設(shè)計(jì)時(shí)寫java代碼或察看這些內(nèi)容.
我們學(xué)習(xí)了一些例子來(lái)明確典型JSP與WW的區(qū)別。WW的亮點(diǎn)在于讀取數(shù)據(jù)、條件測(cè)試、用EL來(lái)掌管數(shù)據(jù)。但這些只是一些簡(jiǎn)單的提示。.
6.2 在什么地方使用EL?
EL 可以使用在任何的WW tag的屬性中,除開(kāi)id tag外. id 應(yīng)該是一個(gè)沒(méi)有省略符號(hào)的字符串. 條件表達(dá)式僅用于for if 和elseif tag的test屬性.
例如: 我們來(lái)看 subset tag. EL 在它的所有屬性中使用. Subset 有3個(gè)屬性: source, count, 和 start.
In this example, we specify 10 and 5 for subset attributes start and count respectively. EL will evaluate these and turn them into Integers.
<iterator:subset start="10" count="5">
<webwork:iterator>
<webwork:property/><br>
</webwork:iterator>
</iterator:subset>
6.3 表達(dá)式類型
EL有兩種主要用途:求值表達(dá)式和條件表達(dá)式. 求值表達(dá)式答應(yīng)你從許多位置、范圍、對(duì)象類型中抽取數(shù)值. 條件表達(dá)式答應(yīng)你使用條件運(yùn)算符來(lái)評(píng)價(jià)一個(gè)或多個(gè)操作數(shù),操作數(shù)本身也是一個(gè)值表達(dá)式.
Value EXPressions
求值表達(dá)式和條件表達(dá)式. 求值表達(dá)式答應(yīng)你從許多位置、范圍、對(duì)象類型中抽取數(shù)值. 例如,
? 在JSP頁(yè)面、Request, Session, 和 application 范圍你可以使用@符號(hào)找到屬性值. 例如:假設(shè)timer在頁(yè)面范圍被定義 i.e. - id="timer". WW 將找到這個(gè)屬性并調(diào)用 getTotal() 來(lái)返回值.
? <webwork:property value="@timer/total"/>

? 使用$符號(hào),可以得到JSP中ServletRequest參數(shù)的值. 本例中,假設(shè)參數(shù) footer 被傳遞給本頁(yè). 我們檢查并察看 if $footer=′jobcode′. 假如為真,則包含 Html table.
? <webwork:if test="$footer==′jobcode′">
? <table border="0" cellpadding="0" cellspacing="3" width="100%" align="center">
? <tr>
? <td><input type="Submit" name="Submit" value="<webwork:text name="′addJobcode.text′"/>"></td></tr>
? </table>
? </webwork:if>

? 使用正確的標(biāo)示符,可以從Action getters 中獲取值.這包含調(diào)用帶參數(shù)的方法,返回簡(jiǎn)單或復(fù)雜的對(duì)象. 例子中, WW 調(diào)用 getSecond(param1, param2).
? <webwork:property value="second(′one′, ′two′)"/>

? 使用“/”符號(hào)可以在一個(gè)層次數(shù)據(jù)中查找. 例子中,當(dāng)前值被使用并調(diào)用 getPerson()方法. 然后, WW將對(duì)前面方法返回的值調(diào)用 getName().
? <webwork:property value="person/name"/>

? 也可以直接訪問(wèn)ValueStack 來(lái)找到當(dāng)前、父、或根對(duì)象.例子中, iterator tag 將 next item 壓棧,給body使用,所以“.” 是指向這個(gè)值.
? <ol>
? <webwork:iterator value="times">
? <li><webwork:text name="{}" value0="."/>
? </webwork:iterator>
? </ol>

條件表達(dá)式Conditional Expressions
條件表達(dá)式答應(yīng)你使用條件運(yùn)算符來(lái)計(jì)算一個(gè)或多個(gè)操作數(shù),這些操作數(shù)本身就是值表達(dá)式。例如:
? 檢查一個(gè)對(duì)象是否為null. 在例子中假如 @matt 為 null 則Success 被打印出來(lái)。
? <webwork:if test="!@matt">
? <b>Success</b>
? </webwork:if>

? 可以計(jì)算兩個(gè)操作數(shù)的條件表達(dá)式Y(jié)ou can evaluate conditionally with two Operands. 例子中,假如if條件為true,就執(zhí)if的主體。
? <webwork:if test="′hello′ == ′hello′">
? <b>Success</b>
? </webwork:if>

? You can set precedence when evaluating conditional expressions with (). In this example, we group conditional expressions together. Note that the operands are themselves value expressions.
? <webwork:if test="bool(′true′) == true && (bool(′false′) == true settings[′foo′] == ′bar′)">
? <b>Success</b>
? </webwork:if>

總之, WW的表達(dá)式語(yǔ)言是一個(gè)強(qiáng)大的工具,讓你在訪問(wèn)數(shù)據(jù)時(shí)有很大的靈活性,讓頁(yè)面設(shè)計(jì)人員很輕易的將數(shù)據(jù)拖到視圖上來(lái)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
美女mm1313爽爽久久久蜜臀| 成人黄色动漫| 狠狠躁18三区二区一区| 亚洲男人的天堂在线aⅴ视频| 美女999久久久精品视频| 欧美激情在线看| 免费看黄在线看| 久久久久无码国产精品一区李宗瑞| 一区二区三区一级片| 白丝校花扒腿让我c| 精品国产区一区二区三区在线观看| 亚洲国产精品久久久久久久| 精品中文字幕av| 欧美欧美天天天天操| 国产欧美一区二区三区网站| 激情久久久久久久久久久久久久久久| 色橹橹欧美在线观看视频高清| 国产精品毛片久久久久久久久久99999999| 欧美日韩综合一区| 羞羞视频立即看| 四虎影视永久免费在线观看一区二区三区| 色综合久久久久综合体| 91精品推荐| 亚洲精品社区| aa免费在线观看| 国产欧美精品一区二区色综合朱莉| 2019中文字幕全在线观看| 亚洲欧美日本在线| 136福利视频导航| 国产自产一区二区| 亚洲精品国产成人影院| 国产黄色av片| 国产情侣第一页| 欧美性猛交xxxx免费看| 亚洲小说图片区| 妖精视频一区二区| 特黄视频免费看| 亚洲四虎av| 日韩精品一二三区| 裸体大乳女做爰69| 欧美色图第一页| а 天堂 在线| 日韩电影中文字幕在线观看| 亚洲精品按摩视频| 国产精品福利影院| 哺乳挤奶一区二区三区免费看| 在线观看精品视频一区二区三区| 影音先锋日韩在线| 北条麻妃在线观看| 真实新婚偷拍xxxxx| 亚洲图片一区二区| 中文字幕一区二区三区人妻四季| 在线亚洲不卡| 青娱乐在线视频观看| 国产偷倩在线播放| 亚洲精品123区| 日韩一区二区三区视频在线观看| 亚洲国产aⅴ精品一区二区三区| 亚洲成av人片乱码色午夜| 亚洲成人av免费在线观看| 538精品视频| 国产又粗又猛视频| 99色在线视频| 大菠萝精品导航| 国产精品无码一区二区桃花视频| 影音先锋久久精品| julia中文字幕一区二区99在线| 免费观看不卡av| 91免费在线观看网站| 日本精品福利视频| segui88久久综合| 亚洲国产精品嫩草影院久久av| 亚洲第一视频在线观看| 国产在成人精品线拍偷自揄拍| 国产精品亚洲综合色区韩国| 日韩欧美国产一区二区在线播放| 欧美日本一区二区三区四区| 99久久九九| 精品1区2区3区4区| 三年中文在线观看免费大全中国| 国产目拍亚洲精品99久久精品| 91av免费观看91av精品在线| 一级片aaaa| 成人天堂资源www在线| 狠狠人妻久久久久久综合蜜桃| 亚洲伦伦在线| 狠狠色噜噜狠狠狠888奇米| 日韩欧美一级片| 亚洲一区二区三区国产| 99久久激情| 午夜日韩影院| www.天天色| 麻豆av一区二区三区久久| 高清欧美精品xxxxx在线看| 国模gogo一区二区大胆私拍| 国产suv精品一区二区883| 国产区二区三区| 免费一级片网址| 成人在线网址| 欧美高清精品一区二区| 国产激情三区| 伊人色综合久久久| 久久狠狠高潮亚洲精品| 国产精品免费无码| 成人黄色生活片| 亚洲天堂av综合网| 日韩毛片在线播放| 日韩欧美xxxx| 96亚洲精品久久久蜜桃| 久久黄色小视频| 国产精品视频免费播放| 亚洲一区二区三区在线播放| 国产精品吹潮在线观看| 天堂久久精品忘忧草| 欧美丝袜丝nylons| 成人福利在线看| 视频精品一区二区| 中国特黄一级片| 欧美aaaaa性bbbbb小妇| 久久不射2019中文字幕| 亚洲精品国产电影| 日韩在线视频不卡| 国产午夜精品理论片| 久草中文在线视频| 91九色蝌蚪91por成人| 日韩精品―中文字幕| 欧美69wwwcom| 久久久99爱| 日本羞羞视频| 91sao在线观看国产| 麻豆网站在线观看| 久久免费公开视频| 午夜丝袜av电影| 69精品国产久热在线观看| 久久精品日产第一区二区三区乱码| 国产日韩欧美不卡在线| 色一情一区二区三区| 久久r热视频| 欧美一区二区视频| 欧美一区二区三区在线免费观看| 欧美国产精品专区| 五月婷婷综合在线观看| 国产成人免费视频网站| 91麻豆福利精品推荐| 国产亚洲一区字幕| 美女黄色成人网| 国产寡妇亲子伦一区二区| 欧美又大又粗又长| 久久久久一区| 国产精品免费久久| 中文字幕第一页在线| 91爱视频在线| 奇米4444一区二区三区| 1024手机在线观看你懂的| 国语自产精品视频在免费| eeuss影院95999部| 韩国理伦片一区二区三区在线播放| xxxx视频在线观看| 欧美国产一区二区在线| 欧美激情视频在线观看| 岳张嘴把我的精子吞下去| 天然素人一区二区视频| 国产精品免费人成网站酒店| 天堂网中文在线观看| 国产香蕉精品视频一区二区三区| 福利视频第一页| 国产精品嫩草影院8vv8| 日韩精品极品视频| 美女免费视频网站| 妺妺窝人体色www在线下载| 久久电影tv| 欧美巨大xxxx做受沙滩| 在线观看一区二区三区视频| 做a视频在线观看| 欧美成年黄网站色视频| 男人添女人荫蒂国产| 一区二区三区不卡在线观看| 日韩一区二区三区在线免费观看| 亚洲一二三四| 欧美日韩视频在线观看一区二区三区| 亚洲综合在线视频| 亚洲人成自拍网站| 黄色激情网址| 高清在线成人网| 久久久精品2019中文字幕神马| 美女亚洲精品| 欧美成人xxx| 日韩av在线第一页| aa免费在线观看| 亚洲黄色av网站| 国产午夜精品一区二区三区欧美| 国产福利精品一区| 蜜桃视频无码区在线观看| 亚洲啪啪aⅴ一区二区三区9色| av无码一区二区三区| 欧美日韩国产不卡| 在线观看a网站| 在线视频精品一区| 亚洲综合影视| 久久久无码中文字幕久...| 欧美日韩一区在线播放| 91玉足脚交白嫩脚丫在线播放| 欧美日韩国产v| 视频一区在线观看| 日韩精品一级二级| 九九久久综合网站| 亚洲福利一区二区| 欧洲激情一区二区| 中文字幕一区二区三区在线播放| 日本v片在线免费观看| 麻豆免费精品视频| 色涩视频在线观看| 久久频这里精品99香蕉| 精品无码久久久久久久动漫| 九九久久九九| 欧美日韩怡红院| 色综合久久久久久久久| 国产婷婷色一区二区三区四区| 国产又粗又猛又黄| 亚洲小说区图片区| 九九爱在线视频观看免费视频| 国产精品嫩草影院8vv8| 久久综合偷偷噜噜噜色| 日韩精品中文字幕一区二区| 久久精品视频在线观看榴莲视频| 欧美一区二区在线视频观看| 宅男在线国产精品| 青青青国内视频在线观看软件| 黄色免费网址大全| 美女视频网站黄色亚洲| 国产女主播一区二区| 国产精品特级毛片一区二区三区| 欧美寡妇性猛交xxx免费| 久久伊人91精品综合网站| 在线视频这里只有精品| 国产高清自拍99| 国产亚洲福利社区一区| 天天操夜夜操免费视频| 午夜精品无码一区二区三区| 五月天激情在线| 精品国产一区二区三区免费| 欧美性淫爽ww久久久久无| 国内精品久久久久久久果冻传媒| 天天综合网在线| 亚洲乱码精品| 一级特黄妇女高潮| 免费人成黄页网站在线一区二区| 欧美视频一区二区三区…| 成人免费视频视频在| 影音先锋男人每日资源站| 欧美无砖专区一中文字| 真人做人试看60分钟免费| 亚洲一区二三区| 我的公把我弄高潮了视频| 4hu四虎永久在线影院成人| 一区二区在线观看视频在线| 亚洲精品国产高清久久伦理二区| 亚洲天堂网一区二区| 国产jizzjizz一区二区| 国产又大又粗又爽的毛片| 色噜噜国产精品视频一区二区| 成人黄色大片网站| 蜜桃av免费在线观看| 欧美日中文字幕| 亚洲成av人片www| 凹凸国产熟女精品视频| 囯产精品一品二区三区| 亚洲男人天堂手机在线| 在线免费不卡视频| 亚洲av无码乱码在线观看性色| 青青在线视频一区二区三区| 中文字幕在线视频一区| a天堂资源在线| 亚洲av综合色区无码一二三区| 99久久99热这里只有精品| 欧美在线一区视频| 日韩中文字幕91| 成全视频在线播放大地| 在线黄色网页| 日韩精品成人免费观看视频| 亚洲av人人澡人人爽人人夜夜| 捆绑裸体绳奴bdsm亚洲| 九九热在线观看视频| 欧美video巨大粗暴18| 免费一区二区三区在线观看| 三妻四妾完整版在线观看电视剧| 亚洲图片欧美激情| 亚洲夜间福利| 一区二区三区日韩在线观看| 国产三级香港三韩国三级| 日韩欧美一区二区在线视频| 国产aⅴ爽av久久久久成人| 最好看的2019的中文字幕视频| 最近国产精品视频| 超碰中文在线| 国产麻豆综合视频在线观看| 麻豆九一精品爱看视频在线观看免费| 日韩精品一区二区三区四区五区| 亚洲天堂最新地址| 日韩免费高清在线观看| 五级黄高潮片90分钟视频| 91网站免费观看| аⅴ资源天堂资源库在线| 天天做天天爱天天爽综合网| 免费看毛片的网站| 综合网在线视频| 国产 中文 字幕 日韩 在线| 97影院理论午夜| 国产欧美日韩综合一区在线播放| 精品欧美一区二区三区在线观看| 亚瑟一区二区三区四区| 精品国产aⅴ一区二区三区东京热| 欧洲三级视频| 亚洲国产精品一区二区久久恐怖片| 国产精品久久久久77777丨| 香港三级韩国三级日本三级| 91精品国产色综合久久久蜜香臀| 欧美亚洲天堂网| 黄一区二区三区| 欧美一区二区观看视频| 亚洲av无码乱码国产精品久久| 91麻豆精品一区二区三区| 五月色婷婷综合| 老司机午夜在线| 亚洲片区在线| 波多野结衣国产精品| 最近国产精品视频| 久久国产精品久久久久久电车|