關於dwr消除伺服器端出錯時彈出alter的解決方案

來源:互聯網
上載者:User

環境:dwr3+jsp

在開發中,我實在不希望dwr彈出alter,只需要列印錯誤記錄檔就可以,用戶端不需要alert出error或者a server error has occurred. 這樣的提示,更不需要alert出堆棧資訊,客戶根本看不懂,也不需要看。怎麼辦?

經過分析,engine.js中有dwr的預設錯誤控制代碼,defaultErrorHandler,如果使用者沒有定義errorhandler,就會把defaultErrorHandler賦給errorhandler。那我們就寫一個js覆蓋errorhandle就可以。

js內容如下:

dwr.engine._errorHandler = function(message, ex) {dwr.engine._debug("Error: " + ex.name + ", " + ex.message, true);};

只有上面一句話,上這個js引入到需要加入的頁面中,dwr服務端出了錯,只會列印日誌,不會alter了。




使用ajaxdwr架構彈出error對話方塊

在SSH架構中,使用ajax的dwr架構彈出error對話方塊,容易出現這種情況。這是錯誤的統一提示,但是這樣的提示不夠友好,並不知道錯誤詳細情況,可以在dwr.xml的設定檔<allow>結點內添加如下代碼

view source

print?

1

<ALLOW>  

2

<CONVERTconverter="bean"match="java.lang.StackTraceElement"/>


3

<CONVERTconverter="exception"match="java.lang.Exception"/>

4

</ALLOW>


這一樣來可以列印出錯誤詳情,這時通常會彈出"a server error has occured"提示框,一般這種情況是由於javascript在調用java方法時,這時商務邏輯層biz/service)並非由spring產生,所以這時的商務邏輯層無法被注入資料訪問層(通用dao),有兩種解決方案:

一:你可以重新new一個spring設定檔對象 applicationContext;或是在javascript要的訪問的java方法中寫上自己的資料訪問實現

二:把"bean"改"spring",表明不是自己建立,而是由spring建立

view source

print?

1

<ALLOW>  

2

<CONVERTconverter="spring"match="java.lang.StackTraceElement"/>


3

<CONVERTconverter="exception"match="java.lang.Exception"/>

4

</ALLOW>


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.