如何通过标准决定在Driver
中设置特定List<Driver>
的字段?没有我自己的属性:
<f:attribute name="hashCode" value="#{driver.hashCode()}"/>
Java BackBean:
public class BackBean {
List<Driver> drivers;
public List<Driver> getDrivers() {
List<Driver> drivers = new ArrayList<Driver>();
...
return drivers;
}
public void licenceReplacedCheckBoxChanged(ValueChangeEvent e) {
Boolean driverDocChanged = (Boolean) e.getNewValue();
int hashCode = (Integer) e.getComponent().getAttributes().get("hashCode");
for (Driver buff : getDrivers()) {
boolean findDriver = ( buff.hashCode() == hashCode );
if (findDriver) {
buff.setDocumentReplaced(driverDocChanged);
buff.makeChangeDriver();
}
}
}
}
XHTML:
<a4j:repeat value="#{backBean.drivers}" var="driver" rowKeyVar="rowDriver" id="drivers">
...
<div class="controls one-control-group">
<h:selectBooleanCheckbox value="#{driver.documentReplaced}"
valueChangeListener="#{backBean.licenceReplacedCheckBoxChanged}">
<f:attribute name="hashCode" value="#{driver.hashCode()}"/>
<a4j:ajax execute="@this" render="..." />
</h:selectBooleanCheckbox>
</div>
...
</a4j:repeat>
答案 0 :(得分:2)
只需在<a4j:ajax listener>
中调用所需的方法。
<h:selectBooleanCheckbox value="#{driver.documentReplaced}">
<a4j:ajax execute="@this" listener="#{driver.makeChangeDriver}" render="..." />
</h:selectBooleanCheckbox>
尽管如此,您可以尝试通过#{driver}
本身而不是其哈希码。
<f:attribute name="driver" value="#{driver}" />
这只是一种不必要的绕道。