自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

JSF2中Ajax事件和錯(cuò)誤

開(kāi)發(fā) 后端
本文將嘗試解決JSF2中的Ajax事件和錯(cuò)誤,以及Mojarra的Ajax樣本中和javascript中的代碼。

JSF2的Ajax支持包含一個(gè)非常基本的功能以聽(tīng)取JSF2客戶端處理代碼中的事件和錯(cuò)誤。它假設(shè)該功能會(huì)被部分開(kāi)發(fā)員使用以監(jiān)視事件,例如,當(dāng)出現(xiàn)一個(gè)明顯的Ajax請(qǐng)求時(shí),圖像會(huì)變成黃色,而沒(méi)有這樣的Ajax請(qǐng)求時(shí)則是黑色。本文將嘗試解決JSF2中的Ajax事件和錯(cuò)誤。

閑話少說(shuō),以下就是從Mojarra的Ajax樣本中截取的一部分代碼:

在出現(xiàn)Ajax調(diào)用的頁(yè)面,我們會(huì)有以下域:

  1. < h3> Status:< /h3> 
  2. < textarea id="statusArea" cols="40" rows="10" readonly="readonly" /> 

一個(gè)簡(jiǎn)單的文本區(qū)域,甚至都沒(méi)有引入后端服務(wù)器數(shù)據(jù)模型。

然后,在我們的javascript中我們會(huì)看到這樣的代碼:

  1. var statusUpdate = function statusUpdate(data) {  
  2. var statusArea = document.getElementById("statusArea");  
  3. var text = statusArea.value;  
  4. texttext = text + "Name: "+data.source.id;  
  5. if (data.type === "event") {  
  6. texttext = text +" Event: "+data.name+"\n";  
  7. else { // otherwise, it's an error  
  8. texttext = text + " Error: "+data.name+"\n";  
  9. }  
  10.  statusArea.value = text;  
  11. };  
  12.    // Setup the statusUpdate function to hear all events on the page  
  13. jsf.ajax.addOnEvent(statusUpdate);  
  14. jsf.ajax.addOnError(statusUpdate); 

運(yùn)行代碼的時(shí)候,你會(huì)看到一組數(shù)據(jù)流向頁(yè)面其他地方出現(xiàn)的Ajax事件和錯(cuò)誤一樣通過(guò)文本區(qū)域。嘗試樣本代碼可以看到更多。

到底發(fā)生了什么:首先,我們定義了一個(gè)JavaScript函數(shù),將其設(shè)置為可變量,然后調(diào)用兩個(gè)JSF Ajax 應(yīng)用程序接口函數(shù):assOnEvent和assOnError。這些函數(shù)使用statusUpdate函數(shù)作為其回調(diào),作為第一個(gè)參數(shù)傳送數(shù)據(jù)對(duì)象。

該數(shù)據(jù)對(duì)象,就事件而言,存在三個(gè)命名的事件:開(kāi)始,完成以及成功。
◆開(kāi)始——在請(qǐng)求被發(fā)送前就發(fā)生了。
◆完成——一旦請(qǐng)求完成,且還未調(diào)用javax.faces.response前發(fā)生。
◆成功——在響應(yīng)方法結(jié)束后發(fā)生

這意味著對(duì)于一般的請(qǐng)求,這三項(xiàng)事件都會(huì)被調(diào)用,而如果出現(xiàn)某種錯(cuò)誤,那么就只有開(kāi)始和完成兩項(xiàng)事件會(huì)被調(diào)用。而就錯(cuò)誤而言,有四種可能的命名錯(cuò)誤:
◆httpError——如果客戶接收到任何HTTP狀態(tài)不是200到299中間的任何數(shù)就會(huì)出現(xiàn)這一錯(cuò)誤。
◆emptyResponse——當(dāng)連接被放棄而沒(méi)有出現(xiàn)任何響應(yīng)的時(shí)候發(fā)生。
◆malformedXML——這意味著接收到的XML不能被正確地分析。
◆serverError——當(dāng)錯(cuò)誤在服務(wù)器上生成且被傳送回客戶端時(shí)出現(xiàn)這一錯(cuò)誤。

數(shù)據(jù)有效負(fù)載包括:
◆類型——事件或錯(cuò)誤之一。
◆名稱——Ajax事件和錯(cuò)誤名稱,如上所述。
◆源——觸發(fā)事件的DOM要素。
◆對(duì)于那些稱為serverError的錯(cuò)誤,也存在一個(gè)errorName和errorMessage域,目的是為了發(fā)送并完成服務(wù)器錯(cuò)誤。
◆附加的responseCode,responseXML和responseTxt,作為XMLHttpResponse對(duì)象。

因此,你什么時(shí)候需要使用這一功能呢?可能不會(huì)經(jīng)常使用。但是由于它沒(méi)有在任何其他其他留下記載,筆者希望能對(duì)其作出一些描述。

【編輯推薦】

  1. JSF的工作方式
  2. Acegi安全系統(tǒng)與JSF結(jié)合
  3. JavaServer Faces(JSF)簡(jiǎn)介
  4. 在JSF中的頁(yè)面導(dǎo)航問(wèn)題
  5. 介紹JSF框架中使用的設(shè)計(jì)模式
責(zé)任編輯:佚名 來(lái)源: IT專家網(wǎng)
相關(guān)推薦

2009-06-25 14:05:08

Ajax JSF

2010-06-09 09:15:58

JSF 2Ajax組件

2009-06-23 14:55:43

AJAX和JSF

2009-06-23 15:02:56

JSF和AJAX

2011-07-21 17:11:09

AjaxJSF

2009-06-26 11:24:15

Seam Remoti

2009-06-26 13:20:50

JSF和Ajax

2009-06-29 10:09:55

AjaxJSF

2009-06-23 18:11:02

JSF的生命周期Ajax處理

2012-02-24 15:25:45

ibmdw

2009-06-22 14:22:41

JSF和Tapestr

2009-06-26 13:48:57

G4JSFGWTJSF

2017-05-12 18:00:44

pyspiderAJAXHTTP

2009-06-24 13:50:29

JSF和MVC

2009-06-24 16:42:17

JSF和Facelet

2011-06-30 10:20:38

JSFMVC

2009-06-24 16:16:30

JSF和Tapestr

2009-06-24 17:43:24

Struts和JSF

2009-06-23 13:21:26

JSF和Spring

2012-03-28 09:14:38

JavaICEfaces
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)