如何使用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找到,然后赋值进相应的字段。
如何获取到值的前后差异呢?我们要使用动作的初始化(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找到,然后赋值进相应的字段。
相关文章推荐
- 如何实际使用强类型Dataset(键盘再也不需要敲入表名和字段名了)
- 如何在报表权限中使用session
- 如何使用数据库实现PHP保存session
- 如何使用SqlSessionTemplate
- SMARTY模板中如何使用get,post,request,cookies,session,server变量
- Android客户端和服务端如何使用Token和Session
- 比较page、request、session、application的使用范围
- 如何使用 StateServer 保存 Session
- 关于在php中如何使用session和Cookies
- 如何使用vim比较文件
- ABAP--在查询条件只包含部分索引字段时,如何使用索引
- 禁用cookie后,如何使用session?
- 如何使用ASPxGridView解决表中较长字段的显示
- [转]Android客户端和服务端如何使用Token和Session
- Android如何使用SQLiteOpenHelper在已经存在的数据库中插入一个字段
- SMARTY模板中如何使用get,post,request,cookies,session,serv
- J2SE基础夯实系列之List中的数据如何根据对象的某一个或多个字段排序引出Comparable和comparator的使用-- Collections与Arrays
- 【mysql】如何做到表内存在同名字段就更改记录,不存在就新增记录(replace的详细使用)
- 主键字段使用不同数据类型的简单比较
- 使用反射创建Bean、Spring中是如何根据类名配置创建Bean实例、Java提供了Class类获取类别的字段和方法,包括构造方法