Sonar鐨勫畨瑁呭緢瀹規槗錛屾寜鐓onar瀹樻柟涓婚〉鐨勫畨瑁呮寚鍗楄В鍘嬬緝鍗沖彲銆?/p>
Sonar榛樿浣跨敤derby浣滀負鏁版嵁搴擄紝浣犲彧闇瑕佸湪sonar.properties鏂囦歡涓幓鎺夊derby鏁版嵁搴撳睘鎬х殑娉ㄩ噴錛岀劧鍚庡惎鍔ˋpache derby鏁版嵁搴撱?/p>
鎸夌収鏂囨。浠嬬粛錛屽惎鍔⊿onar錛岄粯璁ょ殑涓婚〉鍦板潃鏄痟ttp://localhost:9000錛岀櫥褰曠敤鎴峰悕鍜屽瘑鐮佹槸sonar/sonar銆?/p>
浣跨敤Sonar媯鏌ヤ唬鐮侊細
瑕佷嬌鐢⊿onar媯鏌ヤ唬鐮侊紝涔熷緢瀹規槗銆?/p>
濡傛灉寰呮鏌ラ」鐩槸maven欏圭洰錛屽垯鍙渶瑕佸畨瑁卻onar maven plugin鍗沖彲錛涘鏋滄槸闈瀖aven欏圭洰錛屽垯闇瑕佸湪欏圭洰鏍圭洰褰曚笅鍒涘緩pom.xml錛屽唴瀹規寜鐓ф枃妗i厤緗傚叿浣撳弬 瑙侊細http://docs.codehaus.org/display/SONAR/Analyzing+Java+Projects
鐜板湪鍙渶瑕侀」鐩牴鐩綍涓嬶紝榪愯mvn sonar:sonar灝卞彲浠ヨ繍琛宻onar maven plugin鏉ユ鏌ラ」鐩腑鐨勪唬鐮佷簡銆?/p>
娉ㄦ剰錛?/p>
濡傛灉欏圭洰婧愭枃浠朵嬌鐢ㄧ殑緙栫爜涓庣郴緇熺殑榛樿瀛楃闆嗕笉鍚岋紝姣斿鎿嶄綔緋葷粺鏄疓BK錛岃屾簮鏂囦歡緙栫爜涓篣TF-8銆備負浜嗚兘澶熸甯稿湴媯鏌ヤ唬鐮侊紝闇瑕佸湪pom.xml鐨刾roperties鍏冪礌涓嬪鍔犱竴欏歸厤緗:
鍚﹀垯錛宻onar鍦ㄧ敓鎴恈heckstyle.xml鐨勬椂鍊欙紝涓嶄細灝嗘紜殑緙栫爜浼犺繘鍘伙紝瀵艱嚧checkstyle鍦ㄥ仛AST鍒嗘瀽鐨勮繃紼嬩腑浣跨敤浜嗛敊璇? 鐨勫瓧絎﹂泦錛屼粠鑰屾彁紺哄瓧絎﹂敊璇細“expecting 'xxx', but got '<EOF>'”銆傚嵆浣挎槸鍦ㄨ皟鐢╩vn sonar:sonar鐨勬椂鍊欙紝澧炲姞鍙傛暟濡傦細
mvn -Dfile.encoding=UTF-8 -DsourceEncoding=UTF-8 sonar:sonar
涔熸棤娉曠敓鏁堬紝铏界劧閫氳繃-e寮鍏蟲槸鍙互鐪嬪埌緋葷粺鐨勯粯璁ゅ瓧絎﹂泦宸茬粡鏀規垚浜哢TF-8銆?/p>
濂戒簡錛宻onar宸茬粡瀹夎瀹屾瘯錛岃屼笖涔熼『鍒╁湴瀹屾垚浜嗕唬鐮佺殑鍒嗘瀽鍜屾鏌ャ?/p>
涓嬩竴姝ワ紝鎴戜滑灝卞彲浠ュ垎鏋恠onar杈撳嚭鐨勬姤鍛婏紝鍒ゆ柇浠g爜鐨勮川閲忥紝鍒跺畾鏀瑰杽鐨勬帾鏂戒簡銆?/p>
鍓嶄竴闃靛瓙浣跨敤JSF寮鍙憌eb搴旂敤紼嬪簭鐨勮繃紼嬩腑錛岀鍒頒竴涓渶姹傦細A欏甸潰涓婂瓨鍦ㄤ竴涓摼鎺ワ紝鐢ㄦ埛鐐瑰嚮閾炬帴浼氳閲嶅畾鍚態欏甸潰銆傞〉闈涓婂瓨鍦ㄤ竴涓崟閫夋錛屽鏋滄槸閫氳繃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欏甸潰涓婂崟閫夋鐨勭姸鎬佽兘鏍規嵁鏄惁鏉ヨ嚜A欏甸潰鐨勯摼鎺ュ憟鐜伴変腑鎴栧惁鐨勭姸鎬侊細涓鍒囩湅涓婂幓閮藉緢緹庯紝浼間箮宸茬粡瀹屾垚浜嗗姛鑳藉紑鍙戙備絾鏄紝絳夌瓑錛岃鎴戜滑鎻愪氦琛ㄥ崟銆傛祻瑙堝櫒鍒鋒柊浜嗕竴閬嶏紝鍙堝洖鍒頒簡榪欎釜欏甸潰銆傞氳繃媯鏌ュ悗鍙版暟鎹簱浠ュ強鏃ュ織鏂囦歡錛屾垜浠彂鐜幫細
鍦ㄨ蔣浠跺紑鍙戜腑錛岃皟璇曠殑鐩殑鏄В鍐?#8220;濡備綍瀹氫綅緋葷粺闂鎵鍦?#8221;鐨勯棶棰樸備竴鑸剰涔変笂錛岃В鍐抽棶棰樼殑鍘熷垯錛屽鐢ㄨ儭閫傚厛鐢熺殑璇濓紝灝辨槸“澶ц儐鍋囪錛屽皬蹇冩眰璇?#8221;錛涘鐢ㄣ婇害鑲敗鏂規硶銆嬶紝鍒欐槸“浠ヤ簨瀹炰負鍩虹錛屼互鍋囪涓哄鍚戯紝緇撴瀯鍖栨帹鐞?#8221;銆傚叿浣撴潵鐪嬶紝璋冭瘯鏄繖鏍蜂竴縐嶅垎鏋愰棶棰樼殑鏂規硶錛岄潰瀵瑰鏉傜殑闂錛岄氳繃閫愭紜畾姝g‘鎴栬呴敊璇殑浜嬫儏錛岀緝灝忛棶棰樿寖鍥達紝鐩村埌瀹氫綅闂鎵鍦ㄤ負姝€傛妸浜嬫儏紜畾鍖栵紝涔熷彲浠ョ粏鍒嗕負浠ヤ笅姝ラ錛?
鎴戜滑鍏堟潵鍒掑畾鎴戜滑鍒濆鐨勯棶棰樺煙錛欽SF璇鋒眰鎻愪氦鍚庯紝JSF涓嶈兘姝e父璋冪敤鍚庡彴鏂規硶榪涜澶勭悊銆傛垜浠兂鐭ラ亾錛孞SF澶勭悊璇鋒眰榪囩▼涓摢涓湴鏂瑰嚭闂浜嗐傞偅涔堟垜浠‘瀹氱殑鐐規槸浠涔堝憿錛烰SF瑙勮寖銆傚洜涓烘垜浠嬌鐢ㄧ殑鏄疭UN寮鍙戠殑JSF RI錛屾墍浠ュ畠蹇呯劧婊¤凍JSF瑙勮寖銆傚湪瑙勮寖涓紝JSF鐨勮姹傚鐞嗚繃紼嬩竴鍏卞垎鎴愬叚涓樁孌碉細
鎴戜滑鍙互瀹氫箟涓涓狿haseListener錛屾敞鍐屽埌faces-configs.xml鏂囦歡閲岄潰錛岀湅鏁翠釜璇鋒眰榪囩▼鍙戠敓浜嗕粈涔堬紵閫氳繃鏌ョ湅 glassfish鐨勬棩蹇楁枃浠訛紝鎴戜滑鍙戠幇update model values涔嬪悗灝辯洿鎺ender response錛屾病鏈?invoke application銆?濡傛灉涓鍒囨甯革紝搴旇鏄粠絎竴姝ユ墽琛屽埌絎叚姝ワ紝浣嗙幇鍦ㄨ煩榪囦簡絎簲姝ワ紝鐩存帴浠庣鍥涙鍒頒簡絎叚姝ワ紝鏄摢閲屽嚭鐜頒簡闂錛熷ソ錛屼粠“JSF鐨勫鐞嗚繃紼?#8221;鍒?#8220;絎洓姝?Update Model Values”錛屾垜浠凡緇忕緝灝忎簡闂鍩熺殑鑼冨洿錛岀幇鍦ㄧ‘瀹氱殑鐐瑰凡緇忔湁JSF瑙勮寖鍜?“Update Model Values”浜嗐傜戶緇紝浠嶫SF瑙勮寖瀵規楠?#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()鏂規硶鎴栬呬簨浠剁洃鍚櫒閲岄潰璋冪敤浜咶acesContext鐨剅enderResponse()鏂規硶錛屽氨浼氫粠浜嬩歡闃熷垪閲岄潰鐩存帴娓呯┖鍓╀笅鐨勪簨浠訛紝杞悜Render Response姝ラ銆備絾鏄垜浠病鏈夋敞鍐屼換浣曠殑浜嬩歡鐩戝惉鍣紝涔熸病鏈夎嚜瀹氫箟浠諱綍緇勪歡鐨?updateModel()鏂規硶錛岄偅灝卞彧鑳芥槸鍦ㄧ郴緇熺粍浠剁殑updateModel()鏂規硶閲岄潰鎶涘嚭寮傚父琚獼SF寮曟搸鎹曡幏錛岀劧鍚庣洿鎺?render response銆傜幇鍦ㄨ繘涓姝ョ緝灝忚寖鍥翠簡錛岃鎴戜滑鏉ョ湅鐪婮avaapi doc閲岄潰鏄浣曚粙緇峌IInput.updateModel() 鏂規硶鐨勩?
Call setValue() method of the ValueExpression to update the value that the ValueExpression points at.
闂杞Щ鍒癹avax.el.ValueExpression鐨剆etValue()鏂規硶錛屾垜浠潵鐪嬬湅榪欎釜鏂規硶鐨凙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涓婅繖鍧楀尯鍩熺殑鏆楃浣嶇疆錛岃兘鏋佸ぇ鍑忓皯浠ュ悗瑙︾鐨勭棝鑻︺?