2012-05-07 38 views
1

我想從h:selectOneMenu使用p:ajax中的變化獲取值。 但我總是得到空值,不知道下面的代碼是什麼錯。h:selectOneMenu改變事件與p:ajax

<h:form> 
<h:selectOneMenu id="selectMenu" value="#{userHomeController.gymsSelectType}"> 

<f:selectItem itemLabel="Close to me" itemValue="closest" /> 
<f:selectItem itemLabel="Visited by me" itemValue="visited" /> 
<p:ajax process="selectMenu" listener="#{userHomeController.selectMenuListener}" event="change" update=":home-form:panel" /> 

</h:selectOneMenu> 
</h:form> 

和bean類是

public void selectMenuListener() { 
    System.out.println("-------- >> " + gymsSelectType); // here null coming 
    if (gymsSelectType.equals("a")) { 
     // 
    } else { 
     // 
    } 
} 

這是一個viewscoped類。 及以下二傳手的變量gymsSelectType也打印空

public void setGymsSelectType(String gymsSelectType) { 
    System.out.println("------------ >> "+gymsSelectType); 
    this.gymsSelectType = gymsSelectType; 
} 
+0

會執行一些邏輯或只是一個事項顯示/隱藏數據或面板?因爲最後一個只能使用JavaScript來實現。 –

+0

有基於選擇 – Eric

+2

代碼看起來很好,雖然你可以使用'做一些邏輯',它會得到呼籲每個值選擇,這是默認的ajax事件在這裏。如果即使是這樣,你也會得到'null',這個問題就在別的地方。嘗試添加''你的facelet,看是否存在確認沒有錯誤,等等。 – Fallup

回答

4

有你嘗試這種

<p:ajax process="@this" listener="#{userHomeController.selectMenuListener}" event="change" update=":home-form:panel" /> 
+1

在3年後,這問題救了我的命。謝謝。 –

1

試試這個

<p:ajax partialSubmit="true" listener="#{userHomeController.selectMenuListener}" event="change" update=":home-form:panel" />