鍓嶄竴闃靛瓙浣跨敤JSF寮鍙憌eb搴旂敤紼嬪簭鐨勮繃紼嬩腑錛岀鍒頒竴涓渶姹傦細A欏甸潰涓婂瓨鍦ㄤ竴涓摼鎺ワ紝鐢ㄦ埛鐐瑰嚮閾炬帴浼氳閲嶅畾鍚態(tài)欏甸潰銆傞〉闈涓婂瓨鍦ㄤ竴涓崟閫夋錛屽鏋滄槸閫氳繃A欏甸潰鐨勯摼鎺ヨ繃鏉ワ紝浼氭妸鍗曢夋緗負“閫夋嫨”鐨勭姸鎬併傝繖鏄潪甯稿吀鍨嬬殑欏甸潰杞悜錛屾牴鎹甁SF鐨勯〉闈㈣漿鍚戦厤緗紝浠ュ強瀵笿SF闅愬惈瀵硅薄param鐨勪粙緇嶏紝涓嬮潰鐨勪唬鐮?#8220;璨屼技”鍙錛?
A欏甸潰錛?<h:commandLink value="Add" action="add">B欏甸潰錛?
<f:param name="type" value="student" />
</h:commandLink>
<h:form>
<h:selectOneRadio id="type" value="#{param.type}">
<f:selectItem itemlabel="student" itemvalue="student" />
<f:selectItem itemlabel="teacher" itemvalue="teacher" />
</h:selectOneRadio>
<h:commandButton id="add" action="#{backingBean.add}" />
</h:form>
緙栬瘧銆侀儴緗層侀噸鏂板埛鏂伴〉闈€備笉閿欙紝B欏甸潰涓婂崟閫夋鐨勭姸鎬佽兘鏍規(guī)嵁鏄惁鏉ヨ嚜A欏甸潰鐨勯摼鎺ュ憟鐜伴変腑鎴栧惁鐨勭姸鎬侊細涓鍒囩湅涓婂幓閮藉緢緹庯紝浼間箮宸茬粡瀹屾垚浜嗗姛鑳藉紑鍙戙備絾鏄紝絳夌瓑錛岃鎴戜滑鎻愪氦琛ㄥ崟銆傛祻瑙堝櫒鍒鋒柊浜嗕竴閬嶏紝鍙堝洖鍒頒簡榪欎釜欏甸潰銆傞氳繃媯鏌ュ悗鍙版暟鎹簱浠ュ強鏃ュ織鏂囦歡錛屾垜浠彂鐜幫細
鍦ㄨ蔣浠跺紑鍙戜腑錛岃皟璇曠殑鐩殑鏄В鍐?#8220;濡備綍瀹氫綅緋葷粺闂鎵鍦?#8221;鐨勯棶棰樸備竴鑸剰涔変笂錛岃В鍐抽棶棰樼殑鍘熷垯錛屽鐢ㄨ儭閫傚厛鐢熺殑璇濓紝灝辨槸“澶ц儐鍋囪錛屽皬蹇冩眰璇?#8221;錛涘鐢ㄣ婇害鑲敗鏂規(guī)硶銆嬶紝鍒欐槸“浠ヤ簨瀹炰負鍩虹錛屼互鍋囪涓哄鍚戯紝緇撴瀯鍖栨帹鐞?#8221;銆傚叿浣撴潵鐪嬶紝璋冭瘯鏄繖鏍蜂竴縐嶅垎鏋愰棶棰樼殑鏂規(guī)硶錛岄潰瀵瑰鏉傜殑闂錛岄氳繃閫愭紜畾姝g‘鎴栬呴敊璇殑浜嬫儏錛岀緝?yōu)畯闂鑼冨涍_紝鐩村埌瀹氫綅闂鎵鍦ㄤ負姝€傛妸浜嬫儏紜畾鍖栵紝涔熷彲浠ョ粏鍒嗕負浠ヤ笅姝ラ錛?
鎴戜滑鍏堟潵鍒掑畾鎴戜滑鍒濆鐨勯棶棰樺煙錛欽SF璇鋒眰鎻愪氦鍚庯紝JSF涓嶈兘姝e父璋冪敤鍚庡彴鏂規(guī)硶榪涜澶勭悊銆傛垜浠兂鐭ラ亾錛孞SF澶勭悊璇鋒眰榪囩▼涓摢涓湴鏂瑰嚭闂浜嗐傞偅涔堟垜浠‘瀹氱殑鐐規(guī)槸浠涔堝憿錛烰SF瑙勮寖銆傚洜涓烘垜浠嬌鐢ㄧ殑鏄疭UN寮鍙戠殑JSF RI錛屾墍浠ュ畠蹇呯劧婊¤凍JSF瑙勮寖銆傚湪瑙勮寖涓紝JSF鐨勮姹傚鐞嗚繃紼嬩竴鍏卞垎鎴愬叚涓樁孌碉細
鎴戜滑鍙互瀹氫箟涓涓狿haseListener錛屾敞鍐屽埌faces-configs.xml鏂囦歡閲岄潰錛岀湅鏁翠釜璇鋒眰榪囩▼鍙戠敓浜嗕粈涔堬紵閫氳繃鏌ョ湅 glassfish鐨勬棩蹇楁枃浠訛紝鎴戜滑鍙戠幇update model values涔嬪悗灝辯洿鎺ender response錛屾病鏈?invoke application銆?濡傛灉涓鍒囨甯革紝搴旇鏄粠絎竴姝ユ墽琛屽埌絎叚姝ワ紝浣嗙幇鍦ㄨ煩榪囦簡絎簲姝ワ紝鐩存帴浠庣鍥涙鍒頒簡絎叚姝ワ紝鏄摢閲屽嚭鐜頒簡闂錛熷ソ錛屼粠“JSF鐨勫鐞嗚繃紼?#8221;鍒?#8220;絎洓姝?Update Model Values”錛屾垜浠凡緇忕緝?yōu)畯浜嗛棶棰樺煙鐨勮寖鍥村Q岀幇鍦ㄧ‘瀹氱殑鐐瑰凡緇忔湁JSF瑙勮寖鍜?“Update Model Values”浜嗐傜戶緇紝浠嶫SF瑙勮寖瀵規(guī)楠?#8220;”涓鎵?#8220;Update Model Values”鐨勮鏄庯細
If any of the updateModel() methods that was invoked, or an event listener that processed a queued event, called renderResponse() on the FacesContext instance for the current request, clear the remaining events from the event queue and transfer control to the Render Response phase of the request processing lifecycle. Otherwise, control must proceed to the Invoke Application phase.
榪欓噷鎻愬埌濡傛灉鎴戜滑鍦╱pdateModel()鏂規(guī)硶鎴栬呬簨浠剁洃鍚櫒閲岄潰璋冪敤浜咶acesContext鐨剅enderResponse()鏂規(guī)硶錛屽氨浼氫粠浜嬩歡闃熷垪閲岄潰鐩存帴娓呯┖鍓╀笅鐨勪簨浠訛紝杞悜Render Response姝ラ銆備絾鏄垜浠病鏈夋敞鍐屼換浣曠殑浜嬩歡鐩戝惉鍣紝涔熸病鏈夎嚜瀹氫箟浠諱綍緇勪歡鐨?updateModel()鏂規(guī)硶錛岄偅灝卞彧鑳芥槸鍦ㄧ郴緇熺粍浠剁殑updateModel()鏂規(guī)硶閲岄潰鎶涘嚭寮傚父琚獼SF寮曟搸鎹曡幏錛岀劧鍚庣洿鎺?render response銆傜幇鍦ㄨ繘涓姝ョ緝?yōu)畯鑼冨洿浜嗗Q岃鎴戜滑鏉ョ湅鐪婮avaapi doc閲岄潰鏄浣曚粙緇峌IInput.updateModel() 鏂規(guī)硶鐨勩?
Call setValue() method of the ValueExpression to update the value that the ValueExpression points at.
闂杞Щ鍒癹avax.el.ValueExpression鐨剆etValue()鏂規(guī)硶錛屾垜浠潵鐪嬬湅榪欎釜鏂規(guī)硶鐨凙PI錛?/p>
Evaluates the expression relative to the provided context, and sets the result to the provided value.
Throws:
PropertyNotFoundException - if one of the property resolutions failed because a specified variable or property does not exist or is not readable.
鍐嶆潵鐪嬬湅緇勪歡鐨刅alueExpression錛屾垜浠啓鐨勬槸“${param.key}”錛屼粠鏂囨。閲岄潰鍙互寰楃煡param灝辨槸 externalContext.getRequestParameterMap()錛岃?ExternalContext.getRequestParameterMap()鐨勬枃妗f弿鍐欐槸榪欐牱鐨勶細
Return an immutable Map whose keys are the set of request parameters names included in the current request, and whose values (of type String) are the first (or only) value for each parameter name returned by the underlying request.
鍥犱負琛ㄥ崟鎻愪氦鏃剁殑request璺熶箣鍓嶉〉闈㈣漿鍚戞椂鐨凴equest鑲畾涓嶆槸涓鏍鳳紝閭f槸鍚︾敱浜庤ValueExpression瀵艱嚧鐨勯棶棰樸傝鎴戜滑鏉ラ獙璇佷竴涓嬶紝鎶夿欏甸潰涓婂崟閫夋緇勪歡鐨勫兼敼鎴愬瓧絎︿覆瀛楅潰鍊?#8220;student”銆傜幇鍦˙欏甸潰鐨勫崟閫夋緇勪歡灝卞彉鎴愪簡錛?
閮ㄧ講錛岃繍琛屻備笉閿欙紝鐜板湪鐨勯〉闈㈢粍浠惰兘淇濇寔閫変腑鐨勭姸鎬侊紝涔熻兘欏哄埄鍒涘緩鏂扮邯褰曪紝鏃ュ織鏂囦歡涓篃鏈塧dd鏂瑰紡鐨勬墽琛屼俊鎭細璇存槑鐨勭‘鏄洜涓?{param.key} 琛ㄨ揪寮忕殑姹傚煎嚭閿欏鑷村紓甯搞傝繖閲岀殑#{param}宸茬粡涓嶅啀鏄笂涓姝ョ殑#{param}錛岃嚜鐒舵棤娉曚粠externalContext鐨?RequestParameterMap閲岄潰鎵懼埌鍙傛暟鍚嶄負type鐨勫箋傚洜姝わ紝JSF榪愯鍒拌繖閲岋紝鍥犱負鏃犳硶鍙栧埌鍙傛暟鍊煎幓鏇存柊欏甸潰鐨勫崟閫夋緇勪歡錛屾墍浠ュ氨璺沖嚭浜嗗鐞嗚繃紼嬨?/p>
鐜板湪錛屽洖榪囧ご鏉ョ湅涓涓嬮棶棰樼殑鍘熷洜錛欽SF鍦ㄥ鐞嗚姹傜殑鏃跺欙紝浼氬欏甸潰緇勪歡鏍戜笂鐨勬墍鏈夌粍浠惰繘琛岄掑綊鏇存柊錛屽畠浼氭牴鎹粍浠跺畾涔夌殑EL琛ㄨ揪寮忔潵閲嶆柊璁$畻鍊鹼紝鏇存柊緇勪歡鐘舵侊紝浠ヤ繚璇丣SF欏甸潰緇勪歡鐨勭姸鎬佹с傛垜浠緱鍒扮殑鏁欒鏄痯aram絳塉SF闅愬惈瀵硅薄鎴栬鑳界敤錛屼絾鏈濂戒笉瑕佹斁鍦↗SF緇勪歡閲岄潰銆?#8220;榪涗粈涔堝簷錛屾嫓浠涔堢”錛屾垜浠繕鏄夋嫨JSF鎺ㄨ崘鐨刡ackingbean鏉ヤ繚鎸佺粍浠剁殑鍊箋?
杞歡璋冭瘯鏄竴欏瑰緢鏈夋剰鎬濈殑媧誨姩錛屽父甯哥粰寮鍙戜漢鍛樺甫鏉ヨВ璋滆埇鐨勫揩鎰燂紝鎴栬呬竴鍥貢楹葷殑綰犵粨銆傚鍏ヤ唬鐮併佽緗柇鐐廣侀愭璋冭瘯騫朵笉鏄渶濂界殑鍔炴硶錛屾竻妤氬湴鍒掑垎闂鍩燂紝鎵懼噯紜畾鐐瑰彲鑳戒細浜嬪崐鍔熷嶃傚綋鐒訛紝鍦ㄦ壘鍑烘按闈笅闈㈢殑鏆楃涔嬪悗錛屽埆蹇樿緇欒嚜宸便佺粰鍏朵粬浜簃ark涓婅繖鍧楀尯鍩熺殑鏆楃浣嶇疆錛岃兘鏋佸ぇ鍑忓皯浠ュ悗瑙︾鐨勭棝鑻︺?