2012-08-06 106 views
0

我在將某些參數從UI傳遞給Action Listener方法時遇到了一些問題。請找到下面的代碼。我有兩個textboxs,我會通過文本框的值到的ActionListener執行一些計算在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的方法參數的值,該值似乎並沒有得到在「計算」按鈕的第一次點擊時通過。只有當我第二次單擊按鈕時,我似乎纔會獲得即將傳遞的值/參數。您能否讓我知道當我點擊計算按鈕時,我需要做的第一次獲取值。

由於提前

+0

它是一個請求範圍?如果是的話,請嘗試查看範圍 – Daniel 2012-08-06 07:53:42

回答

1

症狀表明,這些參數無法在與形式的頁面被渲染的時刻(這正是當那些<f:param>旨意來解釋)。它看起來很像你實際上將這些值綁定到了相同表單的輸入元素。通過這種方式,<f:param>確實只會在實際提交填寫值的表單時填充(如第一次點擊時發生的那樣)。這解釋了爲什麼第二次點擊和作品。

你很遺憾沒有在你的問題中以任何方式闡述具體的功能需求,但是我明白你只想收集與已定義的動作按鈕相同形式的提交輸入值,如下所示:

<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()); 
}