2013-06-26 22 views
0

這裏的情景:在bean中使用繼承時,爲什麼請求範圍會中斷?

在JSP文件中,我有:

哪裏,這個bean是一個子類,豆,像這樣:

public class NonpUserBean extends NonpRegBean { 

這種情況會導致問題在RequestDispathcer任何企圖。轉發到一個「錯誤」頁面。

然而,

<jsp:useBean id="nonpRegBean" class="com.manavmisra.nonprofit.NonpRegBean" 
    scope="request"/> 

工作正常。

換句話說,當使用「子類」Bean時,請求範圍將崩潰。但是,如果我使用「超類」Bean,則請求範圍在完全相同的場景下可行。

爲什麼?

回答

0

如果nonpRegBean實際上是一個NonpUserBean對象,它不能從com.manavmisra.nonprofit.NonpRegBean類實例化。 NonpRegBean可以是由type屬性指定的引用類型,但不能是class屬性。我認爲這個bean是根據規格定義的。

class屬性指定bean實例的實際類。type屬性指定實例處理的Java類型,它可以是bean的類的超類或由它實現的接口。如果沒有已經在指定範圍內的指定ID的屬性,然後useBean試圖創建一個。它只能做 ,如果它知道要實例化的類。如果已經有匹配的屬性,則useBean嘗試使用它;它將被轉換爲type指定的類型(如果提供),否則轉換爲class指定的類型。

檢查請求範圍中是否存在名爲nonpRegBean的任何屬性。

+0

感謝您的快速響應。但是,我不認爲我理解。 nonpRegBean可以處理請求範圍。但是,擴展nonpRegBean的nonpUserBean不會。 – VisWebsoft

+0

因爲'class'屬性是錯誤的。 – NINCOMPOOP

+0

謝謝。是的,仔細看看另一個相關的JSP,我正在「創建」一個與nonpRegBean類相同的「id」的新請求bean,而不是nonpUserBean類。這似乎與你所指的相似,一旦我改變了這一點,這些東西就可以工作。再次感謝。 – VisWebsoft

相關問題