2009-09-28 72 views
5

我有一個JSP頁面,它調用一個函數並檢查它的返回值。如果返回值不爲空,JSP頁面會繼續使用它。如果返回值爲null,我希望JSP頁面的處理停止(這是因爲該函數在返回null對象之前將執行重定向。另外,其餘的JSP代碼顯然使用此對象,並且會得到空指針異常如果函數返回null)。如何提前停止處理JSP?

所以我的問題是,什麼是停止加載JSP頁面的正確方法?我可以做這樣的事情:

if (Func() == null) { return; } 

或正在使用的JSP中間沒有清潔的方式去了解這個回報?

由於

回答

6

不管如何提前終止一個JSP的處理,我建議在之前處理顯示一個servlet處理的流量控制,並切換到適當的JSP取決於函數調用的結果。

我傾向於純粹使用JSP來顯示bean的內容(或多個),並且所有邏輯都包含在調用的servlet中。通過這樣做,您可以更清晰地分離組件之間的問題,並且可以更容易理解和調試系統。

+0

這很可能是做的最好的事情,但我不能改變該項目目前的結構我的工作(不值得現在的時間)。 – 2009-09-28 19:30:18

1

如果你真的想這樣做,我建議像下面

 

..some jsp.. 
<% 
    if (iWantToKeepProcessing) { 
%> 
..someother stuff.. 

<% 
} 
%> 

我與布萊恩雖然同意,並說,你應該避免進入JSP如果可能的話。如果您正在處理帖子/直接針對動態JSP文件而不是控制器/ servlet,則可能無法使用此功能。

2

布賴恩的答案是一個很好的建議,但它並沒有清楚地回答這個問題。

答案是肯定的。大量的JSP被轉換成一個方法_jspService,它在JSP被「執行」時運行,並且由於它是一個常規函數,它在finally塊中進行清理,所以返回是安全的。

2

由於2.0,還有一個標準的方法:

throw new javax.servlet.jsp.SkipPageException();