2012-01-06 8 views
0

私のbeanはビュースコープです。私はgetterとsetterを持つ単純な文字列プロパティを持っています。 getterはうまく動作します(プロパティの初期化によってチェックされます)が、セッターは動作しません。セッターメソッドでは、私はそれぞれの入力パラメーターを使用してStringbufferを構築しています。Beanのプロパティが更新されていません

コード:

public String getParamval() { 
    return paramval; 
} 

public void setParamval(String paramval) { 
    logger.info("Incoming value:" + paramval); 
    pvals.append(paramval); 
    this.paramval = "VAL"; 
} 

はそれは間違ってますか?私は、入力文字列が渡されているかどうかを確認するためにsetter内でテストしましたが、明らかにメソッドが呼び出されていない/呼び出されていないようです。ビューでは#{}表記を使用しています。

ビュー:

<c:forEach items="${gdsiGeodataBean.requiredfields}" var="reqs"> 
     <h:outputLabel value="#{reqs}:* " /> 
     <pou:inputText value="#{gdsiGeodataBean.paramval}" required="true" requiredMessage="Input is required."/> 
</c:forEach> 

そして、なぜ私はsetterメソッドでのStringBufferを構築したいのでしょうか?なぜなら、入力テキストは動的リストに基づいて動的に作成されるからです。バインドするBeanプロパティは1つしかありません。

私はマップを使うことができますが、上記と同じ理由で、私はsetterメソッドでマップ値を更新できないようです。これは、私はアプローチが完全に間違っているにもかかわらず、ここでUpdating a map value in a managed bean

答えて

3

を尋ねた(フォームを送信した後、ゲッターは正しい値を返しません!)、私はすでにマップを使用すると、あなたのprevious questionに答えてきた質問に接続されていますセッターはこの特定のケースで実際に呼び出されるべきです。

setterが呼び出されていない場合、いくつかの原因が考えられます。最も有名なのは、フォームが<h:form>の内部に配置されていないか、お互いの内側に複数の<h:form>が間違ってネスティングされていることです。別の原因は、入力コンポーネントまたはその親の1つがrendered属性を持ち、サブミット要求時にfalseと評価されることです。

+0

ウィザードコンポーネントは、ダイアログコンポーネント内にある内にあります。このフォーム内にもダイアログコンポーネントにも他のフォームはありません。ビューには、レンダリングされた属性がfalseに設定されている場所はありません。私は、これを確認するためにビュー・ツリーをチェックする必要があると思います。 – algone

+0

何か変なことが起こっています。私はタグをタグに置き換えました。なぜこれはそうですか? – algone

+0

あなたはビューレンダリング時間式に頼っているようです。長いストーリー短い:http://stackoverflow.com/questions/3342984/jstl-in-jsf2-facelets-makes-sense – BalusC

関連する問題