2015-06-15 33 views
0

我有一個帶有p:selectOneRadio的頁面,我希望根據所選的無線電選擇值顯示一個數據表。我有錯誤:隱藏和顯示取決於h的組件:selectOneRadio值

GRAVE: javax.el.MethodNotFoundException: .......changeListenerMethod(javax.faces.event.AjaxBehaviourEvent)

我的代碼如下:

<p:selectOneRadio value="#{analysisOrderForm.selectedOrderDomain}"> 
    <f:selectItem itemLabel="choice1" itemValue="choice1"></f:selectItem>   
    <f:selectItem itemLabel="choice2" itemValue="choice2"></f:selectItem> 
    <p:ajax event="change" listener="#{analysisOrderForm.changeListenerMethod}"/> 
</p:selectOneRadio> 
<h:PanelGroup> 
    <p:dataTable rendered="#{analysisOrderForm.selectedOrderDomain == 'choice1'}">....</p:dataTable> 
    <p:dataTable rendered="#{analysisOrderForm.selectedOrderDomain == 'choice2'}">....</p:dataTable> 
</h:PanelGroup> 

我 'changeListenerMethod方法' 的代碼只是:

public void changeListenerMethod(ValueChangeEvent e){ 
     setSelectedOrderDomain(e.getValue().toString()); 
} 

什麼是正確的,什麼是錯在我的代碼?

回答

0

當使用

<p:ajax event="change" listener="#{analysisOrderForm.changeListenerMethod}"/> 

JSF將尋找一種方法,你analysisOrderForm Bean上具有以下特徵:public void changeListenerMethod(AjaxBehaviourEvent e)。所以你只需要用AjaxBehaviourEvent替換ValueChangeEvent


注:

  • 另一種可供選擇的方法是編寫不參與你的聽衆任何參數,如public void changeListenerMethod()和引用它與listener="#{analysisOrderForm.changeListenerMethod()}
  • 事件變化的方法在你的情況下不是正確的事件。 p:selectOneRadio事件應該是點擊(此外,這是默認的事件值)。又見https://stackoverflow.com/a/21292158/2118909
相關問題