2011-07-07 38 views
0

我有一個奇怪的問題,或者我認爲它很奇怪。所有的 首先,這些都是代碼:JSP Bean只適用於我更改

public class Bean implements Serializable { 
    private String adSoyad; 

    public void setAdSoyad (String adSoyad) { 
     this.adSoyad = adSoyad; 
    } 

    public String getAdSoyad() { 
     return adSoyad; 
    } 
} 

我useBean的:

<jsp:useBean id="isimBean" class="Bean" scope="session"> 
    <jsp:setProperty name="isimBean" property="adSoyad" value="<%=adsoyad%>" /> 
</jsp:useBean> 

除了豆,我控制了會議,並登錄

我一直認爲來自於形式的資訊像這樣

在處理表單的頁面中,有bean的getAdSoday方法。

當我測試表單時,getAdsoyad方法給了我null。但是,我改變了Bean類中的一些內容並保存,當我重新加載頁面時(我只碰到f5,我沒有輸入新數據)getAdsoyad給了我一個結果。

我重新填寫表單沒有任何改變,它不起作用,但是當我改變了一些東西的時候,它就起作用了。

通過改變一些東西,我的意思是讓字母大寫等,或者改變方法名稱中的get和set變量。

總之,它似乎只在我編譯bean.java時才起作用。

可能是什麼問題?

此外,使用get和set方法名稱,允許useBean屬性有什麼不同?如果屬性是aa,set set方法是否會成爲問題?

對不起的語言,我盡我所能解釋它,我希望你們明白這一點。 在此先感謝。我想,我的代碼並不是不正確的。據我所知,bean保存了我發送的信息。我只發送名字和姓氏信息(name = ad,Soyad = surname,adSoyad和nameSurname是一樣的)

我的問題是,bean不保存nameSurname變量。但是當我更改bean.java的一行時,bean正常工作。然後我關閉了頁面,然後打開,bean不再工作。但是我將nameSurname改爲NameSurname,bean正常工作! 我認爲,bean類只在重新編譯時才起作用。

+0

解決。 我的問題是,setProperty不應該在useBean標記中。正確使用Bean代碼如下: 'code' 「/> – Maozturk

回答

0

首先,你的問題不清楚,如果你找到了解決問題的辦法,你應該將其作爲答案並接受。

提醒的是,這裏談到的一些信息:

JSP 2.2規範頁面96和97所指出

(步驟6) 如果在指定的範圍中沒有找到對象,並且類指定名稱是一個定義公共無參數構造函數的非抽象類,那麼該類將被實例化。新對象引用與腳本變量以及指定範圍中的指定名稱使用適當的依賴於範圍的關聯機制(請參閱PageContext)相關聯。之後,執行步驟8。 ..

(步驟8)如果jsp:useBean操作具有非空的主體,則會處理正文。該變量已初始化並在本體範圍內可用。身體的文本被視爲與其他地方一樣。任何模板文本都會傳遞給出站流。腳本和動作標籤將被評估。非空體的常見用法是完成初始化創建的實例。在這種情況下,主體可能會包含jsp:setProperty操作和被評估的腳本。這完成了這個useBean動作的處理。

這就告訴我們,如果Bean類的NO情況下,useBean標籤將實例爲你一個Bean,並且將執行內部setProperty標籤的屬性設置爲某個值。

您的第一個問題是您正在使用的Bean類缺少無參數構造函數 ,因此未能遵守JavaBean標準。