ADF报错 Failed to validate all rows in a transaction

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的转大写.






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值