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