0

私のBeanはビュースコープです。ゲッターとセッターを持つ単純な文字列プロパティがあります。ゲッターは正常に動作しますが (プロパティの初期化によってチェックされます)、セッターは動作しません。セッター メソッドでは、各受信パラメーターを使用して Stringbuffer を構築しています。

コード:

public String getParamval() {
    return paramval;
}

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

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

意見:

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

そして、なぜセッターメソッドで文字列バッファーを構築したいのでしょうか? なぜなら、入力テキストは動的リストに基づいて動的に作成されるからです。バインドする Bean プロパティは 1 つだけです。

マップを使用できることはわかっていますが、上記と同じ理由で、setter メソッドでマップ値を更新できないようです。これは、私がここで尋ねた質問に関連していますマネージド Bean のマップ値の更新

4

1 に答える 1

3

アプローチは完全に間違っていますが (フォームを送信した後、ゲッターは正しい値を返しません!) 、マップの使用に関する以前の質問には既に回答していますが、この特定のケースではセッターを実際に呼び出す必要があります。

セッターが呼び出されない場合、いくつかの原因が考えられます。最も有名なのは、フォームが 内に配置されていない<h:form>か、複数<h:form>の が互いに誤ってネストされていることです。もう 1 つの原因は、入力コンポーネントまたはその親の 1 つに、送信要求中にrenderedたまたま評価される属性があることです。false

于 2012-01-06T11:58:01.040 に答える