f:ajax监听器方法参数

时间:2016-01-12 03:11:09

标签: jsf el methodexpression

TODO:在h:datatable中获取所选行。

使用HtmlDataTable绑定的代码段:

<h:dataTable value="#{bean.licenses}" var="license" rendered="#{!empty bean.licenses}" binding="#{bean.dataTable}">
  <h:column>
    <h:selectOneRadio onclick="uncheckOthers(this);" >
      <f:selectItem itemValue="null" />
      <f:ajax listener="#{bean.updateSelected}" render="licenseGenerator:submitButtons">
        <f:param name="license" value="#{license}" />
      </f:ajax>
    </h:selectOneRadio>
  </h:column>
</h:dataTable>

所以上面提到的是一种方法,但是因为我已经在使用EL 2.2,所以我尝试做the accepted answer.之类的事情并将f:ajax更新为

<f:ajax listener="#{bean.updateSelected(license)}" render="licenseGenerator:submitButtons">

当我使用上面的代码更新代码时,监听器没有被调用,所以我检查了文档说:

  

javax.el.MethodExpression(签名必须与public void匹配   processAjaxBehavior(javax.faces.event.AjaxBehaviorEvent事件)抛出   javax.faces.event.AbortProcessingException)

所以,基本上用上面的签名我不能使用像

这样的东西
public void listener(License license){
    //...
}

然而,由于这是公认的答案,我相信我在这里遗漏了一些东西。谢谢你的帮助!

JSF版:Mojarra JSF实施2.2.12
服务器:Apache Tomcat 8.0.24

0 个答案:

没有答案