`
我改名了
  • 浏览: 87836 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

ofbiz11.04 eca 中 set 操作的BUG

阅读更多

近日又发现了一个ofbiz 11.04  的bug .

在eca 中使用set 如果使用ofbiz 提供的表达式就会出现问题 . eg: <set field-name="newCpspTxId" env-name="${oriTx.oldCpspTxId}" />

 

这行命令的意思是 是把eca 中上下文context 中的oriTx 这个map 中的key 为oldCpspTxId 对应的value 以newCpspTxId为key put 到上下文context 中。。

 

这行命令在第一次执行是正确的 , 如果第一次从上下文取到的值为 301415 的话,那么下次执行取值仍然还是301415 .

之后再执行的话都是定值,不会根据上下文参数的变化而变化了 。

 

 

 

根据我们使用的需要,通过修改其源码 , 现对eca set 规则调整如下 ::

eca  set 使用规则(env-name , format , value  这三者单独设置的时候,不需要特别留意,配合使用的时候 请参考规则) :

1: 如果不设置 format   参数值来源先从env-name 中获取 , 如果 解析env-name 获得的值为null 那么默认使用 value  .这里的env-name 包括带${} 和 不带${}的,  如果 env-name 和 value 都为null 那么不做任何操作 。env-name 值类型为Object ,其上下文本来是什么类型现在还是什么类型 ,value 是String 类型 。


2:如果format 为 append 则先把env-name 转化成String  然后和 value 拼接起来 , env-value 居左  value 居右 .结果类型为String


3如果format 为其他类型 ,那么以env-name format 之后的值 为主 ,如果env-name 为null 那么 format value .

 

duan.jt(段金涛) 10:53:40

4 如果 field-name 的格式是以后逗号分隔的
 。eg:  <set field-name="oriTx.txId"    这种 ,系统会把最后的结果以 txId 为key 放到上下文中的oriTx 这个Map 中 。。。
field-name 中只支持一个逗号.如果不包含逗号 ,结果是以field-name  为key 直接放到上下文中的 。。。

0
0
分享到:
评论
3 楼 dagmom 2012-06-15  
eeca的时候,可以用这样的方法,去设置当前userLogin吗
2 楼 我改名了 2012-04-22  
jiasudu1649 写道


这样用
<set field-name="noteParty" env-name="partyIdTo"/>
        <set field-name="noteInfo" env-name="subject"/>

也会有问题吗

这样使用不会有问题的 .
1 楼 jiasudu1649 2012-04-18  


这样用
<set field-name="noteParty" env-name="partyIdTo"/>
        <set field-name="noteInfo" env-name="subject"/>

也会有问题吗

相关推荐

Global site tag (gtag.js) - Google Analytics