锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久精品亚洲一区二区三区浴池,亚洲电影在线免费观看,国产精品亚洲高清一区二区http://www.tkk7.com/yanzhou/category/12970.html鍠傞┈, 鍔堟煷, 鍛ㄦ父涓栫晫zh-cnWed, 28 Feb 2007 04:47:56 GMTWed, 28 Feb 2007 04:47:56 GMT60[ZZ] JSF璇﹁В(浠巎sf鐨勮繍琛屽師鐞嗗紑濮嬩粙緇嶄簡jsf)http://www.tkk7.com/yanzhou/archive/2006/09/30/73012.html鍛ㄦ父涓栫晫鍛ㄦ父涓栫晫Sat, 30 Sep 2006 05:23:00 GMThttp://www.tkk7.com/yanzhou/archive/2006/09/30/73012.htmlhttp://www.tkk7.com/yanzhou/comments/73012.htmlhttp://www.tkk7.com/yanzhou/archive/2006/09/30/73012.html#Feedback0http://www.tkk7.com/yanzhou/comments/commentRss/73012.htmlhttp://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 JSFhttp://www.tkk7.com/yanzhou/archive/2006/07/17/58640.html鍛ㄦ父涓栫晫鍛ㄦ父涓栫晫Mon, 17 Jul 2006 12:54:00 GMThttp://www.tkk7.com/yanzhou/archive/2006/07/17/58640.htmlhttp://www.tkk7.com/yanzhou/comments/58640.htmlhttp://www.tkk7.com/yanzhou/archive/2006/07/17/58640.html#Feedback0http://www.tkk7.com/yanzhou/comments/commentRss/58640.htmlhttp://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禁止看的免费污网站|