2011-07-07 6 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をコンパイルすると動作するように見えます。

何が問題なのですか?

また、メソッド名の取得と設定では、useBeanプロパティの違いは何ですか?プロパティがaaの場合、メソッドsetAがsetAAであることが問題になりますか?

申し訳ありませんが悪い言語のために、私はそれを説明するために最善を尽くしました、私は皆さんがそれを理解することを願っています。ありがとうございます。

編集:

私のコードは間違っていないと思います。私の知識によると、Beanは私が送信した情報を保存します。私は名前と姓の情報のみを送信しました(名前=広告、Soyad =姓、adSoyadとnameSurnameは同じです)

私の問題は、豆が名前姓を保存しないということです。しかし、bean.javaの1行を変更すると、Beanは正常に動作します。その後、私はページを閉じ、開いて、豆は再び動作しません。しかし、私はNameSurnameを姓に変更しました。正しく動作します! 私は、Beanクラスは再コンパイル時にのみ機能すると思います。

+0

解決済み。 私の問題は、setPropertyはuseBeanタグにあってはいけないということです。正しいuseBeanコードは次のとおりです: 'code' "/> – Maozturk

答えて

0

まず、あなたの質問は明確ではなく、問題の解決策が見つかった場合は、それを回答として投稿し、それを受け入れる必要があります。それを思い出す

は、ここでいくつかの情報付属:ページ96および97個の状態

JSP 2.2仕様をその

オブジェクトが指定されたスコープにない場合(ステップ6) 、およびクラス指定された名前は、パブリックno-argsコンストラクタを定義する抽象クラスではない場合、そのクラスはインスタンス化されます。新しいオブジェクト参照は、適切なスコープ依存の関連付けメカニズム(PageContextを参照)を使用して、スクリプト変数および指定されたスコープ内の指定された名前に関連付けられます。この後、ステップ8が実行される。 ..

(ステップ8)jsp:useBeanアクションに空でないボディがある場合、ボディが処理されます。変数は初期化され、ボディのスコープ内で使用可能です。身体のテキストは他の場所と同じように扱われます。テンプレートテキストはすべてアウトストリームに渡されます。スクリプトレットとアクションタグが評価されます。空でないボディの一般的な使用方法は、作成されたインスタンスの初期化を完了することです。その場合、本文には評価されるjsp:setPropertyアクションとスクリプトレットが含まれている可能性があります。以上で、このuseBeanアクションの処理は完了です。

これはBeanクラスのインスタンスがない場合、useBeanタグはあなたのための1 Beanをインスタンス化し、いくつかの値にあなたのプロパティを設定するには、内側setPropertyタグを実行することを教えてくれる。

最初の問題は、使用しているBeanクラスに、引数なしコンストラクタがないことです。 は、JavaBean標準に準拠していません。

関連する問題