[英]How to trigger the onError client side event
我在click事件處理程序中有一個帶有一些SSJS代碼的按鈕。 它基本上調用一個表示true或false的Java方法。 因此,我還要觸發onComplete和onError CSJS腳本:onComplete表示成功,onError表示失敗。 不幸的是我還沒弄清楚如何觸發onError事件 - 至少不是以優雅的方式。 我的第一種方法是返回200以外的HTTP狀態代碼(此處為500)。 這會觸發onError,但會在瀏覽器控制台中生成一條丑陋的錯誤消息。
那么有沒有其他選項來控制SSJS的結果來調用onComplete或onError腳本?
UPDATE
與此同時,我找到了一個解決方法,但我仍然對我的問題的解決方案感興趣。
我的解決方法是不使用onComplete / onError腳本,而是直接在我的SSJS中調用我的兩個成功/失敗腳本
view.postscript("success()");
和
view.postscript("fail()");
我認為這是一種更清潔的方法。
您可以在SSJS或Java事件中發回自己的狀態代碼:
<xp:this.action><![CDATA[#{javascript:facesContext.getExternalContext().getResponse().setStatus(999);}]]></xp:this.action>
要阻止控制台日志記錄,可以使用Dojo的xhr請求的failOk參數禁用它們(禁用所有請求的控制台日志記錄):
if( !dojo._xhr )
dojo._xhr = dojo.xhr;
dojo.xhr = function(){
try{
var args = arguments[1];
args["failOk"] = true;
arguments[1] = args;
}catch(e){}
dojo._xhr( arguments[0], arguments[1], arguments[2] );
}
現在,您可以為事件添加錯誤處理程序方法:
<xp:this.onError><![CDATA[errorHandler(arguments[0], arguments[1])]]></xp:this.onError>
在該方法中,您可以檢查事件中的狀態代碼,並在代碼匹配時執行您想要的操作:
<script>
function errorHandler(err, xhr){
if( err.status == 999 ){
// whatever
}
}
</script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.