锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久精品亚洲一区二区三区浴池,亚洲电影在线免费观看,国产精品亚洲高清一区二区 http://www.tkk7.com/yanzhou/category/12970.html鍠傞┈, 鍔堟煷, 鍛ㄦ父涓栫晫 zh-cn Wed, 28 Feb 2007 04:47:56 GMT Wed, 28 Feb 2007 04:47:56 GMT 60 [ZZ] JSF璇﹁В(浠巎sf鐨勮繍琛屽師鐞嗗紑濮嬩粙緇嶄簡jsf) http://www.tkk7.com/yanzhou/archive/2006/09/30/73012.html鍛ㄦ父涓栫晫 鍛ㄦ父涓栫晫 Sat, 30 Sep 2006 05:23:00 GMT http://www.tkk7.com/yanzhou/archive/2006/09/30/73012.html http://www.tkk7.com/yanzhou/comments/73012.html http://www.tkk7.com/yanzhou/archive/2006/09/30/73012.html#Feedback 0 http://www.tkk7.com/yanzhou/comments/commentRss/73012.html http://www.tkk7.com/yanzhou/services/trackbacks/73012.html
JSF璇﹁В(浠巎sf鐨勮繍琛屽師鐞嗗紑濮嬩粙緇嶄簡jsf)
1錛?聽 緇撴瀯錛? a) 聽 聽 緇撴瀯鍥撅細 聽 聽 b) 聽 聽 璇存槑錛欽SF浠VC妯″紡涓哄熀紜錛屼笌Struts涓嶅悓錛孞SF鐨勭洰鏍囨槸甯屾湜浠ヤ竴涓笌Swing鐩哥被浼肩殑鏂瑰紡鏉ュ紑鍙戠綉欏碉紝鍥犳錛屼粠JSF鐨勭粨鏋勫浘褰撲腑錛屼粬鐨勬牳蹇冩蹇典笉鏄〉闈紝鑰屾槸鎺т歡鏍戯紝涔熷氨鏄錛屽綋鐢ㄦ埛鎻愪氦涓涓姹傛椂錛孞SF浼氬厛灝嗛〉闈笂鐨勭粍浠跺厛杞崲涓轟笌Swing褰撲腑綾諱技鐨勶紝鐢卞鍣ㄥ拰鎺т歡緇勬垚鐨勬帶浠舵爲錛岀劧鍚庢暟鎹拰浜嬩歡琚緗埌瀵瑰簲鐨勬帶浠朵笂錛岀劧鍚庝互涓縐嶄笌Swing綾諱技鐨勬柟寮忥紝鏉ュ鐞嗗悗緇殑璇鋒眰銆傛帶浠舵爲鏄暣涓狫SF鐨勬牳蹇冿紝鎵鏈夊叾浠栫殑涓鍒囦竴鍒囬兘鏄洿緇曠潃榪欐5鎺т歡鏍戝睍寮鐨勩? 2錛?聽 鐢熷懡鍛ㄦ湡錛? a) 聽 聽 鍛ㄦ湡鍥撅細 聽 聽 b) 聽 聽 璇存槑錛? 聽 b) 聽 聽 璇存槑錛? 聽 b) 聽 聽 璇存槑錛? 聽 聽 聽 聽 聽 聽 聽 i. 聽 聽 聽 聽 Restore View錛欽SF鐨勫鐞嗘牳蹇冩槸鎺т歡鏍戯紝浠栦細鍏堝皢欏甸潰涓婃墍澹版槑鐨勬帶浠惰漿鎹負涓媯墊帶浠舵爲錛屽悗緇殑鎿嶄綔灝嗗湪榪欓鎺т歡鏍戜笂榪涜銆備負浜嗘彁楂樻ц兘錛岀郴緇熶細涓轟箣鍓嶇敓鎴愮殑鎺т歡鏍戞彁渚涚紦瀛樸俁estore View鐨勫伐浣滃氨鏄湪緙撳瓨褰撲腑鏌ユ壘鏄惁瀛樺湪涔嬪墠宸茬粡鐢熸垚濂界殑鎺т歡鏍戯紝濡傛灉娌℃湁錛屽垯鏍規嵁欏甸潰鐨勫唴瀹癸紝閲嶆柊鐢熸垚銆? 聽 聽 聽 聽 聽 聽 ii. 聽 聽 聽 聽 Apply Request Values錛氭妸璇鋒眰褰撲腑鐨勬暟鎹緗埌鎺т歡鏍戝綋涓搴旂殑鎺т歡褰撲腑鍘匯? 聽 聽 聽 聽 聽 iii. 聽 聽 聽 聽 Process Validations錛氬鏋滄煇涓鎺т歡鏈夐厤緗甐alidator錛屽垯榪欎簺Validator灝嗗鍒氳緗殑鏁版嵁鐨勬紜у拰鍚堟硶鎬ц繘琛岄獙璇併? 聽 聽 聽 聽 聽 聽 iv. 聽 聽 聽 聽 Update Model Values錛氭帶浠舵爲涓婄殑鎺т歡鏇存柊鍏跺簳灞傛墍瀵瑰簲鐨勬ā鍨嬨? 聽 聽 聽 聽 聽 聽 聽 v. 聽 聽 聽 聽 Invoke Application錛氬浜х敓鐨勪簨浠惰繘琛屽垎鍙戙? 聽 聽 聽 聽 聽 聽 vi. 聽 聽 聽 聽 Render Response錛氭瀯寤轟綔涓哄搷搴旂殑鎺т歡鏍戙? 3錛?聽 UI錛? a) 聽 聽 緇撴瀯鍥撅細 b) 聽 聽 鎺т歡錛? 聽 聽 聽 聽 聽 聽 聽 i. 聽 聽 聽 聽 璇存槑錛欽SF閫氳繃鏍囩搴擄紝鎻愪緵浜嗕竴浜涗富瑕佹帶浠剁殑瀹炵幇銆傚寘鎷爣絳撅紝鏂囨湰妗嗭紝鍗曢夋錛屽垪琛ㄧ瓑銆傜敱浜嶫SF浣跨敤涓縐嶇被浼間簬UI鐨勬柟寮忔潵緇勭粐緇勪歡錛屾墍浠ワ紝闄や簡鍩烘湰鐨勭粍浠朵互澶栵紝榪樻彁渚涗簡涓浜涚敤浜庡竷灞鐨勫鍣紝渚嬪闈㈡澘絳夈傚湪榪欓噷鏈変竴涓娉ㄦ剰鐨勫湴鏂瑰氨鏄紝涓鑸儏鍐典笅錛岄〉闈㈢殑鍐呭搴旇鏀懼埌JSF鎻愪緵鐨剉iew鏍囩閲岄潰銆? 聽 聽 聽 聽 聽 聽 ii. 聽 聽 聽 聽 浠g爜錛? <%@page contentType="text/html;charset=gb2312"%> <%@ taglib uri="
http://java.sun.com/jsf/core
" prefix="f"%> <%@ taglib uri="
http://java.sun.com/jsf/html
" prefix="h"%> <html> <head><title>Test</title></head> <body> <f:view> <h:form> <h:panelGrid columns="1"> <h:outputLabel> <h:outputText value="User ID"/> </h:outputLabel> </h:panelGrid> </h:form> </f:view> </body> </html> c) 聽 聽 浜嬩歡澶勭悊錛? 聽 聽 聽 聽 聽 聽 聽 i. 聽 聽 聽 聽 璇存槑錛氫笌Struts涓嶅悓錛岀敱浜嶫SF浣跨敤浠ユ帶浠舵爲涓轟腑蹇冪殑鏂瑰紡鏉ュ鐞嗚姹傦紝鎵浠ワ紝濂規彁渚涗簡涓縐嶉澶栫殑綾諱技Swing鐨勶紝浜嬩歡澶勭悊鐨勬柟寮忔潵澶勭悊鐢ㄦ埛鐨勮緭鍏ヤ簨浠躲侸SF鎻愪緵浜嗕袱縐嶄簨浠剁被鍨嬶紝ActionEvent錛岀敤浜庡鐞嗗懡浠ゅ拰ValueChangeEvent錛岀敤浜庡鐞嗘暟鎹洿鏀廣? 聽 聽 聽 聽 聽 聽 ii. 聽 聽 聽 聽 浠g爜錛? 妯″瀷浠g爜錛? package nick; public class UserActionListener implements ActionListener { 聽 public void processAction(ActionEvent arg0) throws AbortProcessingException { 聽 聽 FacesContext context = FacesContext.getCurrentInstance(); 聽 聽 ValueBinding binding = Util.getValueBinding("#{user}"); 聽 聽 User user = (User) binding.getValue(context); 聽 聽 String id = user.getId(); 聽 } } 欏甸潰浠g爜錛? <%@page contentType="text/html;charset=gb2312" import="java.util.*"%> <%@ taglib uri="
http://java.sun.com/jsf/core
" prefix="f"%> <%@ taglib uri="
http://java.sun.com/jsf/html
" prefix="h"%> <html> <head><title>Test</title></head> <body> <f:view> <h:form> <h:panelGrid columns="2"> <h:outputLabel for="id"> <h:outputText value="User ID"/> </h:outputLabel> <h:commandButton id="regist" value="娉ㄥ唽"> <f:actionListener type="nick.UserActionListener"/> </h:commandButton> </h:panelGrid> </h:form> </f:view> </body> </html> 娉細閫氳繃宓屽actionListener鏍囩錛屾垜浠彲浠ヤ負涓涓帶浠舵敞鍐岀洃瑙嗗櫒銆? 4錛?聽 鏁版嵁緇戝畾錛? a) 聽 聽 璇存槑錛氭暟鎹粦瀹氳瑙e喅鐨勯棶棰樺氨鏄浣曟妸妯″瀷涓殑鍊鹼紝緇戝畾鍒伴〉闈㈢殑鎺т歡涓娿傚湪JSF褰撲腑榪欏彲浠ラ氳繃JSF鎵鎻愪緵鐨勯厤緗枃浠舵潵瀹屾垚銆? b) 聽 聽 浠g爜錛? 閰嶇疆鏂囦歡錛? <faces-config> <managed-bean> <managed-bean-name> user </managed-bean-name> <managed-bean-class> nick.User </managed-bean-class> <managed-bean-scope> session </managed-bean-scope> </managed-bean> </faces-config> 妯″瀷浠g爜錛? package nick; public class User { 聽 private String id = "Nick"; public void setId(String id) { 聽 聽 this.id = id; 聽 } 聽 public String getId() { 聽 聽 return this.id; 聽 } } 欏甸潰浠g爜錛? <%@page contentType="text/html;charset=gb2312"%> <%@ taglib uri="
http://java.sun.com/jsf/core
" prefix="f"%> <%@ taglib uri="
http://java.sun.com/jsf/html
" prefix="h"%> <html> 聽 <head><title>Test</title></head> <body> <f:view> <h:form> <h:panelGrid columns="2"> <h:outputLabel for="id"> <h:outputText value="User ID"/> </h:outputLabel> <h:inputText id="id" value="#{user.id}"/> 聽 聽 聽 聽 聽 </h:panelGrid> 聽 聽 聽 聽 </h:form> 聽 聽 </f:view> 聽 </body> 聽 </html> 娉細閫氳繃閰嶇疆鏂囦歡錛屾垜浠妸nick.User綾葷粦瀹氬埌鍚嶇Оuser涓婏紝鐒跺悗欏甸潰鐨勪唬鐮佸氨鍙互鐩存帴浣跨敤#{user.xxx}鏉ュ紩鐢║ser榪欎釜綾諱腑鐨勫悇涓瓧孌點? 5錛?聽 欏甸潰嫻侊細 a) 聽 聽 欏甸潰鍒版帶鍒跺櫒錛? 聽 聽 聽 聽 聽 聽 聽 i. 聽 聽 聽 聽 璇存槑錛欽SF閫氳繃浣跨敤鏂規硶緇戝畾鐨勬柟寮忔潵瀹氫箟浠庨〉闈㈠埌鎺у埗鍣ㄧ殑璺寵漿錛屽拰鏁版嵁緇戝畾鐩稿悓錛屼負浜嗚兘澶熸紜壘鍒拌緇戝畾鏂規硶鎵鍦ㄧ殑綾伙紝鎴戜滑闇瑕侀鍏堝湪閰嶇疆鏂囦歡褰撲腑澹版槑managed-bean錛岀劧鍚庨氳繃璁劇疆鎺т歡鐨刟ction灞炴э紝瀹氫箟欏甸潰鍒版帶鍒跺櫒鐨勮煩杞昏緫銆? 聽 聽 聽 聽 聽 聽 ii. 聽 聽 聽 聽 浠g爜錛? 閰嶇疆鏂囦歡錛? <faces-config> <managed-bean> <managed-bean-name> user </managed-bean-name> <managed-bean-class> nick.User </managed-bean-class> <managed-bean-scope> session </managed-bean-scope> </managed-bean> </faces-config> 妯″瀷浠g爜錛? package nick; public class User { 聽 public String regist() { 聽 聽 return "regist"; 聽 } 聽 public String login() { 聽 聽 return "login"; 聽 } } 欏甸潰浠g爜錛? <%@page contentType="text/html;charset=gb2312"%> <%@ taglib uri="
http://java.sun.com/jsf/core
" prefix="f"%> <%@ taglib uri="
http://java.sun.com/jsf/html
" prefix="h"%> <html> <head><title>Test</title></head> <body> <f:view> <h:form> <h:panelGrid columns="2"> <h:commandButton id="regist" action="#{user.regist}" value="娉ㄥ唽"/> <h:commandButton id="login" action="#{user.login}" value="鐧婚檰"/> </h:panelGrid> </h:form> </f:view> </body> </html> 娉細涓婅堪鐨勯〉闈唬鐮侊紝鎶婃敞鍐屾寜閽殑鍔ㄤ綔緇戝畾鍒癠ser綾葷殑regist()鏂規硶錛屾妸鐧婚檰鎸夐挳鐨勫姩浣滅粦瀹氬埌User綾葷殑login()鏂規硶銆傚洜姝わ紝褰撹繖涓や釜鎸夐挳琚偣鍑繪椂錛屽搴旂殑鏂規硶灝嗚璋冪敤錛岀敤浜庡疄鐜伴〉闈㈡祦鐨勬柟娉曪紝蹇呴』澹版槑涓簆ublic錛岃屼笖濂逛笉鎺ュ彈鍙傛暟錛屼笖榪斿洖鍊煎繀欏諱負String銆? b) 聽 聽 鎺у埗鍣ㄥ埌欏甸潰錛? 聽 聽 聽 聽 聽 聽 聽 i. 聽 聽 聽 聽 璇存槑錛欽SF閫氳繃鍚嶇О緇戝畾鐨勬柟寮忥紝鏉ュ畾涔変粠鎺у埗鍣ㄥ埌欏甸潰鐨勮煩杞備負浜嗗疄鐜頒粠鎺у埗鍣ㄥ埌欏甸潰鐨勮煩杞紝鎴戜滑闇瑕佸湪閰嶇疆鏂囦歡褰撲腑瀹氫箟涓浜?lt;navigation-rule>錛岃繖浜況ule涓昏瀹氫箟浜嗘庝箞鏍規嵁涓婅堪action鏍囩鎵緇戝畾鐨勬柟娉曠殑榪斿洖鍊兼潵鏌ユ壘涓嬩竴欏甸潰銆? 聽 聽 聽 聽 聽 聽 ii. 聽 聽 聽 聽 浠g爜錛? 閰嶇疆鏂囦歡錛? <faces-config> <managed-bean> <managed-bean-name> user </managed-bean-name> <managed-bean-class> nick.User </managed-bean-class> <managed-bean-scope> session </managed-bean-scope> </managed-bean> <navigation-rule> <from-view-id>/index.jsp</from-view-id> <navigation-case> <from-outcome>regist</from-outcome> <to-view-id>/regist.jsp</to-view-id> </navigation-case> <navigation-case> <from-outcome>login</from-outcome> <to-view-id>/login.jsp</to-view-id> </navigation-case> </navigation-rule> </faces-config> 妯″瀷浠g爜錛? package nick; public class User { 聽 public String regist() { 聽 聽 return "regist"; 聽 } 聽 public String login() { 聽 聽 return "login"; 聽 } } 娉細涓婅堪鐨勯厤緗枃浠跺畾涔変簡涓涓?lt;navigation-rule>錛岃rule鎸囨槑浜嗗鏋溾?index.jsp鈥濋〉闈㈤氳繃濂瑰唴閮ㄧ殑鏌愪釜鎺т歡鐨刟ction灞炴у彂鐢熶簡璺寵漿錛岄偅涔堝綋璇ヨ煩杞柟娉曠殑榪斿洖鍊間負瀛楃涓測渞egist鈥濇椂錛屽垯欏甸潰灝嗚煩杞埌瀵瑰簲鐨勨?regist.jsp鈥濅腑錛屽悓鐞嗭紝濡傛灉榪斿洖鍊間負鈥渓ogin鈥濓紝鍒欓〉闈㈠皢璺寵漿鍒扳?login.jsp鈥濄? 6錛?聽 鏁版嵁浼犺緭錛? a) 聽 聽 欏甸潰鍒版帶鍒跺櫒錛? 聽 聽 聽 聽 聽 聽 聽 i. 聽 聽 聽 聽 璇存槑錛氬湪JSF鐨勯〉闈唬鐮佸綋涓紝閫氳繃鏁版嵁緇戝畾錛屾垜浠妸鎺т歡鐨剉alue鍊鹼紝涓庢煇涓悗鍙扮殑鏁版嵁bean鍏寵仈璧鋒潵銆傝屽湪鍓嶈堪鐨勭敓鍛藉懆鏈熼儴鍒嗭紝鎴戜滑鐪嬪埌錛屽綋涓涓狫SF璇鋒眰鍒拌揪鏃訛紝浠栭渶瑕佺粡鍘哛estore View錛孉pply Request Value絳夋楠わ紝鑰孉pply Request Value閮ㄥ垎鐨勫伐浣滐紝灝辨槸鎶婅姹傚綋涓殑鍊肩粦瀹氬埌榪欎釜鍚庡彴鐨刡ean涔嬩腑錛屽洜姝わ紝鎴戜滑涓嶉渶瑕佽冭檻欏甸潰涓殑Form鍊煎浣曚紶鍏ュ埌鍚庡彴鐨刡ean褰撲腑銆? 榪涗竴姝ワ紝濡傛灉褰曞叆鎺т歡鐨剉alue灞炴э紝鍜屽懡浠ゆ帶浠剁殑action灞炴ч兘鏄粦瀹氬湪鍚屼竴涓猙ean涓婄殑璇濓紝閭d箞鍦ㄩ〉闈㈣煩杞椂錛屾垜浠彲浠ョ洿鎺ヨ闂埌bean鐨勫睘鎬у箋備絾鏄負浜嗕笉姹℃煋妯″瀷錛屽拰瀹炵幇鎺у埗涓庢ā鍨嬬殑鍒嗙錛屼竴鑸儏鍐典笅錛屾垜浠渶瑕佹妸杈撳叆鎺т歡鐨剉alue鍊肩粦瀹氬埌鏁版嵁bean錛岃屾妸鍛戒護鎺т歡鐨刟ction鍊肩粦瀹氬埌鎺у埗bean錛岀敱浜庝袱涓猙ean涓嶆槸鍚屼竴涓紝鎵浠ワ紝鎺у埗bean闇瑕佷竴縐嶆柟娉曟潵鑾峰彇鏁版嵁bean涓殑灞炴у箋? 聽 聽 聽 聽 聽 聽 ii. 聽 聽 聽 聽 浠g爜錛? 閰嶇疆鏂囦歡錛? <faces-config> <managed-bean> <managed-bean-name> user </managed-bean-name> <managed-bean-class> nick.User </managed-bean-class> <managed-bean-scope> session </managed-bean-scope> </managed-bean> <managed-bean> <managed-bean-name> action </managed-bean-name> <managed-bean-class> nick.Action </managed-bean-class> <managed-bean-scope> session </managed-bean-scope> </managed-bean> </faces-config> 妯″瀷浠g爜錛? 聽 聽 聽 聽 package nick; public class User { private String id = "Nick"; public void setId(String id) { this.id = id; } public String getId() { return this.id; } } package nick; public class Action { 聽 public String regist() { 聽 聽 ValueBinding binding = Util.getValueBinding("#{user}"); 聽 聽 User user = (User) binding.getValue(FacesContext.getCurrentInstance()); 聽 聽 聽 聽 聽 聽 鈥? 聽 聽 return "regist"; 聽 } } 欏甸潰浠g爜錛? <%@page contentType="text/html;charset=gb2312"%> <%@ taglib uri="
http://java.sun.com/jsf/core
" prefix="f"%> <%@ taglib uri="
http://java.sun.com/jsf/html
" prefix="h"%> <html> <head><title>Test</title></head> <body> <f:view> <h:form> <h:panelGrid columns="2"> <h:outputLabel for="id"> <h:outputText value="User ID"/> </h:outputLabel> <h:inputText id="id" value="#{user.id}"/> <h:commandButton id="regist" action="#{action.regist}" value="娉ㄥ唽"/> </h:panelGrid> </h:form> </f:view> </body> </html> 娉細欏甸潰浠g爜褰撲腑鎶婅緭鍏ユ帶浠剁殑value緇戝畾鍒頒簡user鐨刬d涓婏紝鎶婂懡浠ゆ帶浠剁殑action鍊肩粦 瀹氬埌action鐨剅egist涓娿傚綋鐢ㄦ埛鐐瑰嚮鐧婚檰鎸夐挳鏃訛紝action鐨剅egist()鏂規硶灝嗕細琚皟鐢紝 鑰屽湪璇ユ柟娉曞唴閮紝涓轟簡鑾峰彇涔嬪墠欏甸潰涓殑淇℃伅錛屾垜浠彲浠ヤ嬌鐢╒alueBinding綾匯傝綾諱嬌鐢? 鐨勬暟鎹粦瀹氳〃杈懼紡涓庨〉闈腑鐨勭被浼箋? b) 聽 聽 鎺у埗鍣ㄥ埌欏甸潰錛? 聽 聽 聽 聽 聽 聽 聽 i. 聽 聽 聽 聽 璇存槑錛氶氳繃涔嬪墠鐨勫彊榪幫紝鎴戜滑鍙互鍙戠幇錛屽綋鎴戜滑闇瑕佹妸鏁版嵁浠庢帶鍒跺櫒浼犲埌欏甸潰鏃訛紝鎴戜滑鍚屾牱鍙互浣跨敤鏁版嵁緇戝畾鐨勬柟寮忥紝鍥犱負錛屽綋鎴戜滑閫氳繃鏁版嵁緇戝畾琛ㄨ揪寮忥紝鑾峰彇鍒版煇涓〉闈㈠綋涓墍浣跨敤鐨勬ā鍨嬪疄渚嬫椂錛屼究鍙互鍦ㄨ瀹炰緥涓婄洿鎺ヨ皟鐢ㄥ搴旂殑set()鏂規硶錛屾潵璁懼畾鎵甯屾湜鐨勫箋? 7錛?聽 鎻掍歡鍔熻兘錛? a) 聽 聽 Converter錛堣漿鎹級錛? 聽 聽 聽 聽 聽 聽 聽 i. 聽 聽 聽 聽 璇存槑錛氬綋妯″瀷涓殑鏌愪釜瀛楁闇瑕佸湪欏甸潰涓婃樉紺烘椂錛屽ス闇瑕佸厛琚漿鎹負瀛楃涓茬被鍨嬶紱鑰岀敤鎴峰湪欏甸潰杈撳叆鐨勫瓧絎︿覆鍊鹼紝鍦ㄤ紶鍒版ā鍨嬩腑鏃朵篃闇瑕佹牴鎹ā鍨嬪搴斿瓧孌電殑綾誨瀷錛岃繘琛屼竴涓漿鎹€傚彟澶栵紝鐢變簬鍥介檯鍖栫殑瑕佸幓錛屾ā鍨嬩腑鐨勫煎湪涓嶅悓鐨勫湴鍖轟細鏈変笉鍚岀殑琛ㄧず鏂瑰紡銆備負浜嗚В鍐充互涓婅繖浜涢棶棰橈紝JSF鎻愪緵浜咰onverter鐨勫疄鐜幫紝濂逛富瑕佸仛鐨勪簨鎯呭氨鏄牴鎹墍鍦ㄧ殑鍦板尯錛屽欏甸潰鏁版嵁鍜屾ā鍨嬫暟鎹繘琛屽弻鍚戠殑杞崲銆? 聽 聽 聽 聽 聽 聽 ii. 聽 聽 聽 聽 浠g爜錛? 妯″瀷浠g爜錛? package nick; public class User { 聽 private Date date = new Date(); 聽 public Date getDate() { 聽 聽 return date; 聽 } 聽 public void setDate(Date date) { 聽 聽 this.date = date; 聽 } } 欏甸潰浠g爜錛? <%@page contentType="text/html;charset=gb2312"%> <%@ taglib uri="
http://java.sun.com/jsf/core
" prefix="f"%> <%@ taglib uri="
http://java.sun.com/jsf/html
" prefix="h"%> <html> <head><title>Test</title></head> <body> <f:view> <h:form> <h:panelGrid columns="3"> <h:outputLabel for="date"> <h:outputText value="date"/> </h:outputLabel> <h:inputText id="date" value="#{user.date}"> <f:convertDateTime pattern="M/d/yyyy"/> </h:inputText> <h:message for="date"/> </h:panelGrid> </h:form> </f:view> </body> </html> 娉細閫氳繃宓屽鐨刢onvertXXX鏍囩錛屾垜浠彲浠ヤ負鎺т歡閰嶇疆鐢ㄤ簬杞崲鐨勮漿鎹㈠櫒銆傛垜浠彲浠ヤ嬌鐢ㄤ袱縐嶆柟寮忔潵娉ㄥ唽杞崲鍣紝涓鏄氳繃鎺т歡鐨刢onvert灞炴э紝鍙﹀涓縐嶅氨鏄氳繃宓屽鐨刢onvertXXX鏍囩銆傚鏋滃湪杞崲鐨勬椂鍊欏彂鐢熼敊璇紝閭d箞JSF灝嗚煩榪囪漿鎹互鍚庣殑姝ラ錛岃岀洿鎺ヨ煩鍒癛ender Response姝ラ錛岀敓鎴愬搷搴旓紝騫跺湪FacesContext閲屾坊鍔犱竴涓嚭閿欑殑Message錛岃Message鐨勫唴瀹瑰彲浠ラ氳繃message鏍囩榪涜鏄劇ず銆?br />b) 聽 聽 Validate錛堥獙璇侊級錛? 聽 聽 聽 聽 聽 聽 聽 i. 聽 聽 聽 聽 璇存槑錛氬湪鏁版嵁琚氦浠樺悗鍙板鐞嗕互鍓嶏紝鎴戜滑鍙互閫氳繃楠岃瘉鍣紝鏉ラ獙璇佽緭鍏ョ殑鏁版嵁鏄惁鍚堟硶錛岃繖鍖呮嫭鏁板肩殑澶у皬錛屾垨鑰呮槸瀛楃涓茬殑闀垮害絳夈備嬌鐢ㄩ獙璇佸櫒鐨勫ソ澶勫氨鏄垜浠彲浠ユ妸楠岃瘉鐨勪唬鐮佷粠鎺у埗浠g爜涓崟鐙嚭鏉ワ紝浠ヤ究綆$悊鍜岄噸鐢ㄣ? 聽 聽 聽 聽 聽 聽 ii. 聽 聽 聽 聽 浠g爜錛? 欏甸潰浠g爜錛? <%@page contentType="text/html;charset=gb2312"%> <%@ taglib uri="
http://java.sun.com/jsf/core
" prefix="f"%> <%@ taglib uri="
http://java.sun.com/jsf/html
" prefix="h"%> <html> <head><title>Test</title></head> <body> <f:view> <h:form> <h:panelGrid columns="3"> <h:outputLabel for="id"> <h:outputText value="User ID"/> </h:outputLabel> <h:inputText id="id" value="#{user.id}"> <f:validateLength minimum="3" maximum="6"/> </h:inputText> <h:message for="id"/> </h:panelGrid> </h:form> </f:view> </body> </html> 娉細閫氳繃宓屽鐨剉alidateXXX鏍囩鎴戜滑鍙互涓轟竴涓帶浠舵敞鍐屼竴涓獙璇佸櫒錛屼笌杞崲鍣ㄤ笉鍚岋紝鎴戜滑鍙互涓轟竴涓帶浠舵敞鍐屽涓獙璇佸櫒錛屼互榪涜澶嶆潅鐨勯獙璇併傛敞鍐岄獙璇佸櫒鐨勬柟娉曚篃鏈変袱涓紝涓鏄氳繃鎺т歡鐨剉alidator灞炴э紝鍙﹀涓縐嶅氨鏄氳繃宓屽鐨剉alidateXXX鏍囩銆備笌杞崲鍣ㄧ被浼鹼紝褰撻獙璇佸け璐ユ椂錛屽け璐ョ殑鍘熷洜涔熶細浠essage鐨勫艦寮忚鏀懼埌FacesContext鍐咃紝鍦ㄩ〉闈㈠唴閫氳繃message鏍囩鍙互瀵歸敊璇俊鎭繘琛屾樉紺恒? 8錛?聽 鍥介檯鍖栨敮鎸? a) 聽 聽 璇存槑錛氫負浜嗘彁渚涘鍥介檯鍖栫殑鏀寔錛孞SF浣跨敤浜嗕笌Struts綾諱技鐨勯氳繃璧勬簮鏂囦歡鐨勫艦寮忥紝浠庡閮ㄨ幏鍙栭渶瑕佹樉紺虹殑鍐呭銆? b) 聽 聽 浠g爜錛? 閰嶇疆鏂囦歡錛? <faces-config> <application> <message-bundle>nick.Messages</message-bundle> <locale-config> <default-locale>cn</default-locale> <supported-locale>en</supported-locale> </locale-config> 聽 </application> </faces-config> 欏甸潰浠g爜錛? <%@page contentType="text/html;charset=gb2312"%> <%@ taglib uri="
http://java.sun.com/jsf/core
" prefix="f"%> <%@ taglib uri="
http://java.sun.com/jsf/html
" prefix="h"%> <html> <head><title>Test</title></head> <f:loadBundle basename="nick.Messages" var="message"/> <body> <f:view> <h:form> <h:panelGrid columns="3"> <h:outputLabel for="id"> <h:outputText value="#{message.id}"/> </h:outputLabel> <h:inputText id="id" value="#{user.id}"/> 聽 聽 聽 聽 聽 聽 聽 聽 </h:panelGrid> </h:form> </f:view> </body> </html> 娉細濡傛灉鎴戜滑闇瑕佽冭檻鍥介檯鍖栫殑闂鏃訛紝閭d箞鎴戜滑闇瑕佷負鍚屼竴涓祫婧愭彁渚涘涓湴鍖虹殑璧勬簮鏂囦歡瀹炵幇銆傞氳繃鍦ㄩ厤緗枃浠朵腑澹版槑message-bundle錛屾垜浠彲浠ユ敞鍐岃祫婧愭枃浠剁殑澶氫釜鐗堟湰錛屼互涓婇潰涓轟緥錛屽ス娉ㄥ唽浜嗕袱涓祫婧愭枃浠秐ick.Messages_cn.properties鍜宯ickcen.Messages_en.properties鍒嗗埆瀵瑰簲浜庝腑鍥藉拰鑻卞浗鍦板尯錛屽綋欏甸潰褰撲腑閫氳繃loadBundle鏍囩璇誨彇璧勬簮鏃訛紝濂瑰氨浼氭牴鎹墍鍦ㄧ殑鍖哄煙錛屽幓鏌ユ壘瀵瑰簲鐨勬枃浠躲傚綋鐒訛紝鎵鏈夎祫婧愭枃浠墮兘搴旇浣跨敤java鎵鎻愪緵鐨刵ative2ascii宸ュ叿錛岃繘琛屼竴涓嬮澶勭悊銆? 9錛?聽 JSF瀹氬埗錛? a) 聽 聽 璇存槑錛氳閮ㄥ垎涓昏灞曠ず濡備綍瀵笿SF鎻愪緵鐨勮漿鎹㈠櫒錛岄獙璇佸櫒鍜屾帶浠惰繘琛屽畾鍒訛紝浠ユ墿灞旿SF鐨勫姛鑳姐? b) 聽 聽 閰嶇疆鏂囦歡瀹氬埗錛? 聽 聽 聽 聽 聽 聽 聽 i. 聽 聽 聽 聽 璇存槑錛欽SF鎻愪緵浜嗘瘮Struts鏇村鐨勫畾鍒剁壒鎬э紝鍖呮嫭鐢ㄤ簬瀹炰緥鍖栧墠绔帶鍒禙acesServelt鐨刦aces-context-factory錛岀敤浜庡疄渚嬪寲鎺т歡緇樼敾RenderKit鐨剅ender-kit-factory錛岃繘琛屽0鏄庡懆鏈熺鐞嗙殑lifecyle-factory絳夈? 聽 聽 聽 聽 聽 聽 ii. 聽 聽 聽 聽 浠g爜錛? 閰嶇疆鏂囦歡錛? <faces-config> 聽 <factory> 聽 聽 <application-factory>鈥?lt;/application-factory> 聽 聽 <faces-context-factory>鈥?lt;/faces-context-factory> 聽 聽 <lifecycle-factory>鈥?lt;/lifecycle-factory> 聽 聽 <render-kit-factory>鈥?lt;/render-kit-factory> 聽 </factory> </faces-config> c) 聽 聽 杞崲鍣ㄥ畾鍒訛細 聽 聽 聽 聽 聽 聽 聽 i. 聽 聽 聽 聽 璇存槑錛氶氳繃鎵╁睍JSF鎻愪緵鐨凜onverter鎺ュ彛錛屾垜浠彲浠ュ畾涔夎嚜宸辯殑杞崲鍣ㄣ傝屼負浜嗚兘鍦ㄩ〉闈笂浣跨敤鑷畾涔夌殑杞崲鍣紝鎴戜滑闇瑕佸湪閰嶇疆鏂囦歡涓紝瀵硅漿鎹㈠櫒榪涜娉ㄥ唽銆? 聽 聽 聽 聽 聽 聽 ii. 聽 聽 聽 聽 浠g爜錛? 閰嶇疆鏂囦歡錛? <faces-config> <converter> <converter-id>nameConverter</converter-id> <converter-class>nick.NameConverter</converter-class> </converter> </faces-config> 妯″瀷鏂囦歡錛? package nick; public class NameConverter implements Converter { public Object getAsObject(FacesContext ar0, UIComponent ar1, String ar2) { 聽 聽 return ar2.toLowerCase(); } public String getAsString(FacesContext ar0, UIComponent ar1, Object ar2) { 聽 聽 retrun ((String) arg2).toUpperCase(); } } 欏甸潰鏂囦歡錛? <%@page contentType="text/html;charset=gb2312"%> <%@ taglib uri="
http://java.sun.com/jsf/core
" prefix="f"%> <%@ taglib uri="
http://java.sun.com/jsf/html
" prefix="h"%> <html> <head><title>Test</title></head> <f:loadBundle basename="nick.Messages" var="message"/> <body> <f:view> <h:form> <h:panelGrid columns="3"> <h:outputLabel for="id"> <h:outputText value="#{message.id}"/> </h:outputLabel> <h:inputText id="id" value="#{user.id}" immediate="true"> <f:converter converterId="nameConverter"/> </h:inputText> <h:message for="id"/> <h:commandButton action="#{action.regist}" value="Regist"/> </h:panelGrid> </h:form> </f:view> </body> </html> 娉細褰撻〉闈㈡暟鎹漿鎹負鍚庡彴鏁版嵁鏃訛紝Converter鐨刧etAsObject()鏂規硶浼氳璋冪敤銆傝屽綋闇瑕佹妸鍚庡彴鏁版嵁鏄劇ず鍒伴〉闈腑鏃訛紝getAsString()鏂規硶浼氳璋冪敤銆傝繖閲岋紝鎴戜滑娉ㄦ剰鍒幫紝鎴戜滑鐨凜onverter鏄笉鑳藉甫浠諱綍閰嶇疆灞炴х殑錛屼負浜嗚鎴戜滑鐨凜onverter鑳藉鍦ㄩ〉闈腑澧炲姞灞炴э紝鎴戜滑闇瑕佽繘涓姝ョ殑瀹氫箟鑷繁鐨勬爣絳俱傞櫎浜嗗彲浠ユ牴鎹甤onverter-id鏉ユ敞鍐岃漿鎹㈠櫒浠ュ錛屾垜浠繕鍙互浣跨敤converter-for-class鏍囩鏉ヤ負鏌愪竴鐗瑰畾鐨凧ava綾誨瀷娉ㄥ唽杞崲鍣ㄣ傚鏋滃湪杞崲榪囩▼涓彂鐢熼敊璇殑璇濓紝閭d箞鎴戜滑鍙互閫氳繃鎶涘嚭ConverterException鏉ュ仠姝㈠悗緇殑宸ヤ綔銆? d) 聽 聽 楠岃瘉鍣ㄥ畾鍒訛細 聽 聽 聽 聽 聽 聽 聽 i. 聽 聽 聽 聽 璇存槑錛氶氳繃鎵╁睍Validator鎺ュ彛錛屾垜浠彲浠ュ畾涔夎嚜宸辯殑楠岃瘉鍣ㄣ傝屼負浜嗚兘鍦ㄩ〉闈笂浣跨敤鑷畾涔夌殑楠岃瘉鍣紝鎴戜滑闇瑕佸湪閰嶇疆鏂囦歡涓紝瀵歸獙璇佸櫒榪涜娉ㄥ唽銆? 聽 聽 聽 聽 聽 聽 ii. 聽 聽 聽 聽 浠g爜錛? 閰嶇疆鏂囦歡錛? <faces-config> <validator> <validator-id>nameValidator</validator-id> <validator-class>nick.NameValidator</validator-class> </validator> </faces-config> 妯″瀷鏂囦歡錛? package nick; public class NameValidator implements Validator { 聽 public void validate(FacesContext arg0, UIComponent arg1, Object arg2) 聽 聽 聽 聽 throws ValidatorException { 聽 聽 String name = (String) arg2; 聽 聽 if (!name.startsWith("nick")) { 聽 聽 聽 聽 throw new ValidatorException(new FacesMessage( 聽 聽 聽 聽 聽 聽 "name must start with nick")); 聽 聽 } 聽 } } 欏甸潰鏂囦歡錛? <%@page contentType="text/html;charset=gb2312"%> <%@ taglib uri="
http://java.sun.com/jsf/core
" prefix="f"%> <%@ taglib uri="
http://java.sun.com/jsf/html
" prefix="h"%> <html> <head><title>Test</title></head> <f:loadBundle basename="nick.Messages" var="message"/> <body> <f:view> <h:form> <h:panelGrid columns="3"> <h:outputLabel for="id"> <h:outputText value="#{message.id}"/> </h:outputLabel> <h:inputText id="id" value="#{user.id}"> 聽 聽 聽 聽 聽 聽 <f:validator validatorId="nameValidator"/> </h:inputText> <h:message for="id"/> <h:commandButton action="#{action.regist}" value="Regist"/> </h:panelGrid> </h:form> </f:view> </body> </html> 娉細瀹氬埗楠岃瘉鍣ㄧ殑鎿嶄綔涓庡畾鍒惰漿鎹㈠櫒鐨勬搷浣滃ぇ鑷寸浉鍚岋紝濡傛灉鎴戜滑甯屾湜閫氳繃欏甸潰鐨勬柟寮忎負楠岃瘉鍣ㄦ彁渚涘睘鎬х殑璇濓紝閭d箞鎴戜滑涔熼渶瑕佸畾涔夐澶栫殑鏍囩銆? e) 聽 聽 鎺т歡瀹氬埗錛? 聽 聽 聽 聽 聽 聽 聽 i. 聽 聽 聽 聽 璇存槑錛欽SF鍏佽鐢ㄦ埛鍩轟簬JSF鐨勬鏋訛紝榪涜鎺т歡鐨勫畾鍒訛紝鎺т歡瀹氬埗闇瑕佸畬鎴愪互涓嬪嚑閮ㄥ垎鐨勫伐浣滐紝1.闇瑕佷竴涓帶浠跺疄鐜扮被錛屼負浜嗚兘璁╂帶浠跺湪欏甸潰涓婁嬌鐢紝鎴戜滑鐨勬帶浠惰繕闇瑕佸湪閰嶇疆鏂囦歡涓紝閫氳繃component鏍囩榪涜娉ㄥ唽錛?.鐢ㄤ簬鎺т歡娓叉煋鐨凴ender綾伙紱3.鐢ㄤ簬鍦ㄩ〉闈笂浣跨敤鎺т歡鐨勬爣絳俱? f) 聽 聽 鎺т歡鏍戝畾鍒訛細 聽 聽 聽 聽 聽 聽 聽 i. 聽 聽 聽 聽 璇存槑錛氶櫎浜嗗彲浠ラ氳繃欏甸潰鏍囩鏉ュ0鏄庢帶浠朵互澶栵紝鎴戜滑鍙互閫氳繃紼嬪簭鐨勬柟寮忔潵瀹氬埗鎺т歡鏍戯紝閫氳繃璋冪敤FacesContext涓婄殑getViewRoot()鏂規硶錛屾垜浠彲浠ヨ幏寰楁帶浠舵爲鐨勬牴寮曠敤錛岄氳繃璇ュ紩鐢紝鎴戜滑鍙互鍔ㄦ佺殑瀵規帶浠惰繘琛屽鍒狅紝鎴栬呭姩鎬佺殑涓烘煇涓鎺т歡澧炲垹浜嬩歡鐩戝惉鍣紝鍜岄獙璇佸櫒絳夈? g) 聽 聽 Web甯擱噺錛? 聽 聽 聽 聽 聽 聽 聽 i. 聽 聽 聽 聽 璇存槑錛欽SF鎻愪緵浜嗕竴緇勬搷浣渁pplication錛宑ontext錛宻ession錛宑ookies錛宲age絳夊父閲忕殑鏂規硶銆傞氳繃璋冪敤FacesContext涓婄殑getExternalContext()鏂規硶錛屾垜浠彲浠ヨ幏寰椾竴涓ExternalContext鐨勫紩鐢紝閫氳繃璇ュ紩鐢ㄦ垜浠彲浠ヨ幏鍙栨墍鏈夋垜浠笇鏈涗嬌鐢ㄧ殑session錛宑ookies絳夊父閲忕殑寮曠敤錛岄櫎姝や互澶栵紝鎴戜滑榪樿兘鑾峰彇request褰撲腑鐨勫ご淇℃伅鍜岃姹備俊鎭瓑銆?/font>
]]> [緲昏瘧] JSF for Nonbelievers: Clearing the FUD about JSF http://www.tkk7.com/yanzhou/archive/2006/07/17/58640.html鍛ㄦ父涓栫晫 鍛ㄦ父涓栫晫 Mon, 17 Jul 2006 12:54:00 GMT http://www.tkk7.com/yanzhou/archive/2006/07/17/58640.html http://www.tkk7.com/yanzhou/comments/58640.html http://www.tkk7.com/yanzhou/archive/2006/07/17/58640.html#Feedback 0 http://www.tkk7.com/yanzhou/comments/commentRss/58640.html http://www.tkk7.com/yanzhou/services/trackbacks/58640.html 闃呰鍏ㄦ枃 ]]>
主站蜘蛛池模板:
69视频在线是免费观看 |
精品亚洲一区二区三区在线观看 |
免费精品国产自产拍在 |
亚洲高清国产拍精品青青草原 |
亚洲国产香蕉碰碰人人 |
亚洲国产美女精品久久久 |
免费观看一区二区三区 |
国产成人3p视频免费观看 |
亚洲视频小说图片 |
中文字幕看片在线a免费 |
免费看大美女大黄大色 |
中文字幕亚洲综合久久 |
足恋玩丝袜脚视频免费网站 |
亚洲韩国精品无码一区二区三区 |
青青免费在线视频 |
四虎www成人影院免费观看 |
亚洲黄色片免费看 |
永久免费av无码不卡在线观看 |
亚洲高清资源在线观看 |
57PAO成人国产永久免费视频
|
一级特黄aa毛片免费观看 |
四虎永久精品免费观看 |
亚洲av永久综合在线观看尤物 |
久久久精品午夜免费不卡 |
久久精品夜色噜噜亚洲A∨ |
97无码人妻福利免费公开在线视频 |
久久亚洲精品成人AV |
免费A级毛片av无码 |
亚洲av中文无码乱人伦在线播放 |
一级中文字幕免费乱码专区 |
免费A级毛片无码久久版 |
亚洲aⅴ无码专区在线观看 |
美女被免费视频网站a国产 |
一道本在线免费视频 |
亚洲人成无码www久久久 |
特a级免费高清黄色片 |
久久精品国产亚洲AV大全 |
免费a级毛片在线观看 |
国产成人免费视频 |
亚洲综合久久1区2区3区
|
18禁止看的免费污网站 |