锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
public String logout() {
FacesContext fc = FacesContext.getCurrentInstance();
HttpSession session = (HttpSession) fc.getExternalContext().getSession(false);
session.invalidate();
return "login_page";
}
濡傛灉浣犳兂鏈変竴涓姩鐢籫if鍥劇墖鍦?/span>"璇風瓑寰?.."涓?褰撹〃鍗曟彁浜ゅ悗璇ュ浘鐗囧簲璇ヤ粠鏂板姞杞?鍥犳,鍐嶄竴嬈℃寚瀹氬浘鐗囩殑id,騫朵笖娣誨姞緇忚繃涓孌墊椂闂村歡鏃跺悗閲嶆柊鍔犺澆鐨勪唬鐮?涓嬮潰鏄釜渚嬪瓙: <script>
涓嬮潰鐨勪唬鐮佺墖孌電ず渚嬩簡濡備綍鍦↗SP欏甸潰涓粨鏉焥ession:
<% session.invalidate(); %><c:redirect url="loginPage.jsf" />
<h:commandLink actionListener="#{productBean.downloadAction}" styleClass="highLightLink">
<h:outputText value="download"/>
<f:param name="productId" value="#{productBean.id}"/>
</h:commandLink>
public void downloadAction(ActionEvent event) {
try {
String fileName="D:\\temp\\images\\products\\" + this.id + ".xls";
logger.debug("file name=" + fileName);
ByteArrayOutputStream baos=this.serviceLocator.getFileService().downloadFile(fileName); //璋冪敤Service鏂規硶錛岃幏寰楁枃浠剁殑ByteArrayOutputStream
HttpServletResponse response=FacesUtils.getServletResponse();
response.setHeader("Content-disposition", "attachment; filename=" + id+ ".xls" ); //涓嶆槸鍐呭祵鏄劇ず(inline)錛岃屾槸浣滀負闄勪歡涓嬭澆
response.setContentLength(baos.size());
ServletOutputStream sos=response.getOutputStream();
baos.writeTo(sos);
baos.close();
sos.flush();
} catch (IOException ex) {
logger.debug(ex);
}
}
public ByteArrayOutputStream downloadFile(String fileName) throws IOException {
FileInputStream fis=new FileInputStream(fileName);
BufferedInputStream bis=new BufferedInputStream(fis);
ByteArrayOutputStream baos=new ByteArrayOutputStream();
BufferedOutputStream bos=new BufferedOutputStream(baos);
int i;
while((i=bis.read())!=-1) {
bos.write(i);
}
bos.flush();//鎻愪氦鏂囦歡嫻侊紝寰堝叧閿?br /> bis.close();
return baos;
}
鍓嶅彴瀹炵幇錛歁yfaces
鍚庡彴綆$悊Bean錛?/span>
<h:form target="mainFrame"> |
mainFrame |
<h:form target="mainFrame"> |
mainFrame |
褰搃nputText鐨勫兼敼鍙樼殑鏃跺欎細瑙﹀彂processValueChanged浜嬩歡錛屾浜嬫儏鍐呴儴閫氳繃鍙傛暟錛岃幏鍙朒tmlInputText鐨勬帶浠訛紝鐒跺悗璁懼畾readonly錛屽悓鏃惰瀹歱anelGrid鐨勬ā鍨媍hangePanel鐨勫睘鎬э紝鍥犱負panelGrid緇戝畾浜哻hangePanel榪欎釜妯″瀷銆?br />
2銆丄ction events(鍔ㄤ綔浜嬩歡)
涓婇潰榪欎釜鏄潤鎬乷utcome浜嬩歡錛屽湪faces-config.xml涓厤緗浉搴旂殑灞炴у悗錛岀偣鍑昏鎸夐挳浼氳漿鍚戠浉搴旂殑鏂規硶銆?br />
濡傛灉娣誨姞浜哸ctionListener灞炴х殑璇濓紝鐐瑰嚮涔嬪悗錛屽湪杞悜鍏朵粬欏甸潰涔嬪墠錛屼細瑙﹀彂鎸囧畾鐨勪簨浠訛紝澶勭悊涔嬪悗鍐嶈漿鍚戙?br />
榪欓噷鐨刣oSomeAction鏂規硶鐨勫0鏄庢槸void doSomeAction(ActionEvent actionEvent)銆?br />
涓婇潰榪欎釜鏄姩鎬乷utcome浜嬩歡錛屽綋鐐瑰嚮璇ユ寜閽箣鍚庝細鐩存帴瑙﹀彂loginForm涓殑login浜嬩歡錛宭ogin浜嬩歡榪斿洖鐨勬槸涓涓瓧絎︿覆錛屽湪login澶勭悊瀹岀浉搴旀搷浣滀箣鍚庨渶瑕佽繑鍥炰竴涓睘鎬т腑宸茬粡閰嶇疆榪囩殑瀛楃涓詫紝渚嬪success錛岀劧鍚嶫SF鏍規嵁faces-config.xml涓殑閰嶇疆錛岃煩杞埌鐩稿簲鐨勯〉闈€俵ogin鐨勫0鏄庝竴鑸槸String login();
褰撶劧涔熷彲浠ラ氳繃紼嬪簭鏉ユ坊鍔犵洃鍚櫒錛屼笉榪囩洃鍚櫒綾婚渶瑕佸疄鐜癆ctionListener鎺ュ彛錛?br />
3銆丏ata model events錛堟暟鎹ā鍨嬩簨浠訛級
灝嗕笂闈㈢殑浠g爜鏀懼叆鍒濆鍖栫▼搴忎腑錛屽綋琛岀殑閫夋嫨鏀瑰彉鐨勬椂鍊欏氨浼氳Е鍙戠浉搴旂殑鏃ュ織鎵撳嵃銆?br />
榪欐槸鍥犱負榪欐浠g爜緇檇ataTable鎺т歡瀹氫箟浜嗕竴涓暟鎹ā鍨嬶紝鏁版嵁鍜岀浉搴旂殑浜嬩歡鍏ㄩ儴瀛樺湪榪欎釜鏁版嵁妯″瀷閲岄潰錛岀劧鍚庡皢dataTable涓庤繖涓ā鍨嬭繘琛岀粦瀹氬嵆鍙嬌鐢ㄥ畠鎵鏈夌殑鏁版嵁鍜屼簨浠躲傜偣鍑籨ataTable涓婇潰鐨勪竴琛岃嚜鐒朵篃灝變細鍑哄彂鐩稿簲鐨勮閫夋嫨浜嬩歡銆?
4.Phase events錛堥樁孌典簨浠訛級
榪欎釜浜嬩歡鏄負浜嗘崟鎹変竴浜涢樁孌靛拰榪囩▼鑰岃瀹氱殑錛屾湁浠ヤ笅鍑犱釜闃舵鍙互鎹曟崏錛?br />
鍏蜂綋鍙互鍙傝?/span>http://java.sun.com/javaee/javaserverfaces/1.1_01/docs/api/javax/faces/event/PhaseId.html
閫氳繃璁懼畾鍦ㄥ疄鐜扮被涓瀹氱浉搴旂殑PhaseId浠ュ強娣誨姞鍒癴aces-config.xml涓氨鍙互鎹曟崏鐩稿簲闃舵浜嬩歡騫舵坊鍔犲搷搴旂殑浠g爜
瀹炵幇綾?/span>
鍦╢aces-config.xml涓坊鍔?br />
褰撶劧鍙互娣誨姞鏃犻檺涓殑鐩戝惉鍣?br />
涓嬮潰鏄姹傚鐞嗙殑鐢熷懡鍛ㄦ湡錛屽ぇ瀹跺彲浠ョ洿瑙傜殑鐪嬩竴涓嬪悇涓樁孌墊墽琛岄『搴忥細
鍚勪釜闃舵鐨勮鏄庝互鍙婃墍鑳借Е鍙戠殑浜嬩歡