您的位置:首页 > 其它

如何使用Session比较前后字段的值?

2009-10-12 13:56 155 查看
很多人在在开发CQ的时候,可能会遇到需要对某个字段的值改变做前后比较,如状态从已提交转换到已分配,父子控件内增加了新的子流程记录,需要修改对应的记录值等等。

如何获取到值的前后差异呢?我们要使用动作的初始化(Initialization) HOOK及验证(Validation) HOOK进行校验。

在初始化Hook中,填写如下内容:

set session = getsession

session.NameValue("<Session字段名>") = <需要保存的字段值(可以是list值)>

set session = nothing

那么在验证Hook中,我们可以用以下代码获取到:

<变量> = session.NameValue("<Session字段名>")

这样就可以完成对这个字段值的未改变前的获取,然后在验证Hook中对当前字段值进行获取,即可进行比较了。

这段代码也可以用来对父子流程中信息传递,如需要将父记录的标题、内容带到对应的子流程中。CQ的父子控件机制并不强大,容易造成孤儿的产生。所以父子控件在创建子流程时候,在父流程未保存前,子流程是与父流程没有任何关联的。父流程信息如何获取呢?

使用预操作挂钩即可,将NameValue在挂钩操作中进行赋值,然后再子流程的Submit初始化Hook中添加获取这个NameValue的值即可,一般我们使用父流程的ID进行session保存,在子流程中将父流程记录根据ID找到,然后赋值进相应的字段。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: