0

UIからActionListenerメソッドにいくつかのパラメーターを渡す際にいくつかの問題があります。以下のコードを見つけてください。2つのテキストボックスがあり、テキストボックスの値をactionListenerに渡して、いくつかの計算を実行します

<h:commandButton  id="calculateButtonID"  value="Calculate" actionListener="#{adjustedBean.calculate}">
    <f:param name="targetInventoryDays" value="#{adjustedBean.adjustedQtyVo.targetDays}"></f:param>
    <f:param name="seasonalityFactor"  value="#{adjustedBean.adjustedQtyVo.seasonFactor}"></f:param>
       </h:commandButton>

ActionListenerメソッドでパラメーターの値を取得しようとすると、[計算]ボタンの最初のクリックで値が渡されないようです。ボタンをクリックしたときだけ、2回目は、通過する値/パラメーターを取得しているようです。計算ボタンをクリックしたときに、最初に値を取得するために何をする必要があるかを教えてください。

前もって感謝します

4

1 に答える 1

1

症状は、フォームのあるページがレンダリングされた時点でこれらのパラメーターが使用できないことを示しています(これはまさにそれら<f:param>のパラメーターが解釈されるときです)。これらの値をまったく同じ形式の入力要素に実際にバインドしたように見えます。このように、<f:param>sは実際に、値が入力されたフォームを実際に送信したときにのみ入力されます(最初のクリックで発生するように)。これは、2回目のクリックとオンが機能する理由を説明しています。

残念ながら、質問では具体的な機能要件を詳しく説明していませんでしたが、次のように定義されているアクションボタンとまったく同じ形式の送信された入力値を収集したいだけだと理解しています。

<h:inputText value="#{adjustedBean.adjustedQtyVo.targetDays}" />
<h:inputText value="#{adjustedBean.adjustedQtyVo.seasonFactor}" />

その場合、これはまったく必要ありません<f:param>。アクションメソッドが呼び出された時点で、JSFはすでにモデル値を更新しています。これらのタグを削除<f:param>して、次のように送信された値を取得するだけです。

public void calculate() {
     System.out.println(adjustedQtyVo.getTargetDays());
     System.out.println(adjustedQtyVo.getSeasonFactor());
}
于 2012-08-06T11:32:48.963 に答える