我正在使用jsp頁面中的JavaBean。我想給它一個動態名稱,因爲根據變量的值(我們稱之爲foo
),我希望它具有不同的內容,並且我希望將所有這些不同的版本保留在內存中。我希望這些bean具有會話範圍,因爲重新評估內容非常昂貴。檢索與JSP相關聯的JavaBean名稱或使用動態名稱構建變量
現在這個bean有一個靜態名稱,如果我使用不同的值foo
重新加載頁面,那麼這個bean的內容和以前一樣(jsp:usebean
查找具有指定名稱的JavaBean,如果它存在,它使用舊的)。我想保留舊版本和新版本,所以它們必須有不同的名稱。
我想這樣做是:
<jsp:useBean id="stats<%=foo%>" class="foo.bar" scope="session">
</jsp:useBean>
我的問題是,我不能引用的JavaBean在JSP中的代碼,因爲我不知道它的名字。有關如何解決這個問題的任何想法?
實質上,我想基於另一個變量的vaslue建立一個動態名稱的變量。
或者,我想檢索與當前頁面關聯的JavaBeans的名稱,以便獲得對剛剛創建的JavaBean的引用。
這似乎很簡單,我也可以un-Bean foo.bar類(我更喜歡)。但是,我會做一些JSP框架已經實現的功能,我寧願不這樣做。 我想如果我不能做到我原先想的那樣,這是一個可以接受的黑客行爲。 :) 謝謝您的回答! – FrontierPsycho 2010-05-13 08:58:57
我試圖做到這一點,Java不明白Bean是一個類,它認爲它是一個類型參數,即使我導入了類。因此「new Bean()」會給出錯誤。我甚至用「字符串」試了一下,我得到了同樣的結果。 – FrontierPsycho 2010-05-13 09:55:10
我使用這個解決方案,雖然修改了一下。我沒有擴展HashMap(因爲它不可能),但我在useBean標記中使用了一個Hashtable,並且在我的jsp代碼中實現了上述邏輯。不是很乾淨,但它的工作原理並不那麼難看。 – FrontierPsycho 2010-05-13 11:28:27