-1

IDEとしてnetbeans 7.2.1を使用しています。JSF フレームワークに基づいて GLASSFISH3+ サーバー上で実行される、さまざまなユーザー プロファイルを持つ複数の質問の選択肢 Web アプリを開発しようとしていますが、4 つ目のマネージド Bean を導入するときに問題が発生しました。そこで、同じコードで 4 つのマネージド Bean を使用し、単純な文字列属性を持つ別のプロジェクトでテストを行いました。testBean、test2Bean、test3Bean、test4Bean。サンプルコードは次のとおりです。


import javax.faces.bean.ManagedBean; 
import javax.faces.bean.SessionScoped;
@ManagedBean 
@SessionScoped 
public class test3Bean implements java.io.Serializable {
private String s;
public String getS() { 
return s; 
} 
public void setS(String s) {
this.s = s; 
}
} 

Web アプリには、4 つのマネージド Bean (index.xhtml) に設定される 4 つの入力を読み取る単純な index.xhtml があります。


テストワードを入力 1 h:inputText value="#{test1.S}テストワードを
入力 2 h:inputText value="#{test2.S}テストワードを
入力 3 h:inputText value="#{test3.S}テストワードを
入力 4 h: inputText value="#{test4.S}

   A submit button

reponse.xhtml には 4 つの入力が表示されます。

アプリケーションを実行すると、undex.xhtml が表示され、h:inputText に単語を入力して送信した後、次のエラーが発生します。

/index.xhtml @14,107 value="#{test4.s}": ターゲットに到達できません。識別子 'test4' が null に解決されました。

同じコードの testBean 1、2、および 3 が、test4Bean ではなく Mojarra/ファクレット エンジンによって処理されていることを理解できません。

任意のアイデアをください。

4

1 に答える 1

1

あなたのコードはやや混乱しています。まず、最初の文字を大文字にしてすべてのクラス名を書く必要があります。

import javax.faces.bean.ManagedBean; 
import javax.faces.bean.SessionScoped;
@ManagedBean 
@SessionScoped 
public class Test3Bean implements java.io.Serializable {
  ..
}

この Bean は、識別子を使用してビューから呼び出す必要がありますtest3Bean(最初の文字が小文字になっていることに注意してください)。Bean プロパティも小文字にする必要があります。

これにより、JSF の正しい入力フィールドは次のようになります。

<h:inputText value="#{test3Bean.s} />

これらの提案に従ってコードを変更し、再試行してください。

于 2013-03-06T11:14:20.910 に答える