ADF报错 Failed to validate all rows in a transaction

来源:互联网 发布:决战平安京邀请码淘宝 编辑:程序博客网 时间:2024/06/08 15:11

Oracle ADF 在插入一条业务主键时 点保存后 报错误Failed to validate all rows in a transaction

分析了一下原因:

在EO中我已经做了EO唯一性校验 理论上是不可能出现这个现象的.

后来才发现是大小写的原因.

在页面两种转大写方法1种是js法,一种是在context转

context法:

只要在stype中设置

text-transform:uppercase;
就可以了 在ADF中,设置属性
contentStyle="text-transform:uppercase;"
即可(实际上该value仍为小写)

js法:

js代码

function toUpper(event) {   var txtField = event.getCurrentTarget();               txtField.setValue(txtField.getSubmittedValue().toUpperCase());}
输入域事件
<af:clientListener method="toUpper" type="valueChange"/>


在界面上 比如我在业务主键Code输入 haq 在context上调用Uppercase()

给我转成大写HAQ展现在UI上,但实际上 该Code仍然为小写的,

而在Managebean中我再次调用String 型的转大写功能存入数据库(数据库中该字段是存在唯一性校验的)

则会因为冲突而报错误



而在界面上按Shift输入haq 则直接进入EO校验

所以考虑 在JS中把用户界面输入的haq直接转成HAQ而不是在context里转.context转是无意义的.它只是界面看到的一种效果

另外JS中的转大写代码是在光标离开后才有变化,所以仍然要结合contextStyle的转大写.