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