0

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,所以我试图做一些类似于接受的答案的事情。并将 f:ajax 更新为

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

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

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

所以,基本上有了上面的签名,我不能使用类似的东西

public void listener(License license){
    //...
}

但是,由于这是公认的答案,我确信我在这里遗漏了一些东西。谢谢您的帮助!

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

4

0 回答 0