我有一个带有p: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>
我的&#39; changeListenerMethod方法的代码&#39;只是:
public void changeListenerMethod(ValueChangeEvent e){
setSelectedOrderDomain(e.getValue().toString());
}
我的代码中有什么错误和错误?
答案 0 :(得分:0)
使用时
<p:ajax event="change" listener="#{analysisOrderForm.changeListenerMethod}"/>
JSF将在analysisOrderForm
bean中查找具有以下签名的方法:public void changeListenerMethod(AjaxBehaviourEvent e)
。因此,您只需要将ValueChangeEvent
替换为AjaxBehaviourEvent
。
注意:
public void changeListenerMethod()
,并使用listener="#{analysisOrderForm.changeListenerMethod()}
p:selectOneRadio
事件应点击(此外,这是默认事件值)。另请参阅https://stackoverflow.com/a/21292158/2118909