2008-12-16 65 views
4

我想使用c:import或c:url來獲取頁面內容(adserver)。另外,我需要指定超時時間,如果調用超時或頁面不可訪問,我需要一些默認文本作爲我的值返回。c:import或c:url - 指定超時值

是否有一個jstl標籤庫來做到這一點?或者我需要創建自己的?

回答

4

種。

c:import打開一個套接字到服務器,並簡單地返回連接所做的事情(在你的情況下是原始html)。如果服務器返回的頁面是一個404,那麼這將顯示,一個500然後你得到的錯誤頁面。

因爲它是一個套接字,所以它可以訪問所有的套接字錯誤。 對於超時:

java.net.ConnectException: Operation timed out  

未知主機:

java.net.UnknownHostException: www.googasdasdasdassdle.com 

這意味着,你可以用你的進口在catch語句和處理那裏的頁面上。

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 

<c:catch var="socketExceptionVariable"> 
    <c:import url="www.googasdasdasdassdle.com"/> 
</c:catch> 

<c:if test="${socketExceptionVariable != null}"> 
    <p>There was an error here</p> 
    <c:out value="${socketExceptionVariable}"/> 
</c:if> 

如果導入發生那麼它按預期工作,但如果有什麼(什麼)出現問題,則顯示你的錯誤頁面。

您可以編寫自己的導入標籤,但是封裝了這個標籤,但與此解決方案相比,它的工作量相當大。

+0

PS你可能想修復你的標籤jstltimeout是兩個實際的單詞。 – Hyposaurus 2009-02-25 02:43:28