我有一个要求,我需要在将错误数据完全发布到数据库之前更正它...
我发现可以在 View Object Impl Class 中完成验证。我尝试使用以下代码对代码进行更改:
public void beforeCommit(TransactionEvent e) {
Row row = this.getCurrentRow();
Row[] locationRows = this.getAllRowsInRange();
System.out.println(this.getCurrentRowIndex());
for (int i = 0; i < locationRows.length; i++) {
System.out.println(locationRows[i].getAttribute("PortSequenceNo"));
locationRows[i].setAttribute("PortSequenceNo", 100 + i);
this.validate();
System.out.println("validated");
this.postChanges(e);
System.out.println("Changes posted");
}
validatePSN(locationRows);
super.beforeCommit(e);
}
但是这段代码给出了以下错误:
javax.faces.el.EvaluationException:oracle.jbo.JboException:JBO-28202:实体在 beforeCommit() 中无效。需要重新验证并发布。在 org.apache.myfaces.trinidadinternal.taglib.util.MethodExpressionMethodBinding.invoke(MethodExpressionMethodBinding.java:58) 在 org.apache.myfaces.trinidad.component.UIXComponentBase.broadcastToMethodBinding(UIXComponentBase.java:1433)
请帮助我应该怎么做,以便我可以对通过 ADF 表格发布的实际值进行最后一分钟的更改