起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1432|回复: 4

[结贴] 标准动作save如何处理“新增”时只能写入一次的问题

[复制链接]

10

主题

43

帖子

158

积分

初级会员

Rank: 2

积分
158
QQ
发表于 2015-10-19 13:36:19 | 显示全部楼层 |阅读模式
版本: X5.3.0 小版本号: 2.1
数据库: MySQL 服务器操作系统: Windows 应用服务器: Tomcat
客户端操作系统: Windows 7 浏览器: Chrome
需求:有多个业务概念,都包含“创建时间”和“更新时间”;希望“创建时间”只在新增时填充,之后都不能修改;
而“更新时间”,在更新每一条业务数据时,自动将当前系统时间写到“更新时间”字段中;


实现思路:
首先不想在UI层实现,既麻烦,又不安全;
也不想在各个业务模块的process中实现,因为每个process/每个activity都需要编程,很麻烦;
因此希望通过扩展标准的saveAction来完成;

问题来了:
每次save时,刷新“更新字段”可以做到:将rowState=EDIT的行中,填充当前时间即可;


可是,对于“创建时间”字段,无法阻止系统的BizData.save方法去写入新的值;
如果在saveAction的readOnly参数中填写 “创建时间”,又无法在新增操作时写入。。。


感觉上,createAction只是准备好初始数据,放到前端,然后统一通过saveAction存入数据库,save的时候往往新增数据和修改数据是在一个table中传给saveAction,无法让其中的新增记录 去掉几个字段。。。

哪位大神可以帮忙出出主意?

4

主题

1579

帖子

2706

积分

内部用户

积分
2706
发表于 2015-10-20 15:46:00 | 显示全部楼层
xplay 发表于 2015-10-19 21:08
管理员大人,我知道新增的rowState=NEW,请再仔细看看我描述的问题:
更新的记录,在save的时候,如何让系 ...

通过Row对象上的方法修改“创建时间”列状态为没有修改,这样BizData.save就不会再保存“创建时间”列的数据

方法:
Row.setModifiedState("创建时间", false)
回复 支持 1 反对 0

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35920
发表于 2015-10-19 17:16:45 | 显示全部楼层
新增的也可以按照编辑的设置啊
新增的rowState=NEW
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

10

主题

43

帖子

158

积分

初级会员

Rank: 2

积分
158
QQ
 楼主| 发表于 2015-10-19 21:08:40 | 显示全部楼层
管理员大人,我知道新增的rowState=NEW,请再仔细看看我描述的问题:
更新的记录,在save的时候,如何让系统的BizData.save不去写入“创建时间”?
回复 支持 反对

使用道具 举报

10

主题

43

帖子

158

积分

初级会员

Rank: 2

积分
158
QQ
 楼主| 发表于 2015-10-20 16:22:14 | 显示全部楼层
哇塞,居然可以,太感谢了!!!
---妈妈再也不用担心我的创建时间被改了!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-5 09:22 , Processed in 0.069608 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表