0

我有一个带有 ap:selectOneRadio 的页面,我想根据所选择的无线电选择值显示一个数据表。我有错误:

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

我的代码中什么是正确的,什么是错误的?

4

1 回答 1

0

使用时

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

JSF 将在您的analysisOrderFormbean 中查找具有以下签名的方法:public void changeListenerMethod(AjaxBehaviourEvent e). 所以你只需要替换ValueChangeEventAjaxBehaviourEvent.


笔记:

  • 另一种替代方法是编写一个不接受任何参数的方法,例如public void changeListenerMethod()并在您的侦听器中引用它listener="#{analysisOrderForm.changeListenerMethod()}
  • 在您的情况下,事件更改不是正确的事件。p:selectOneRadio事件应该是单击(此外,这是默认事件值)。另请参阅https://stackoverflow.com/a/21292158/2118909
于 2015-06-15T12:49:48.177 回答