保存新员工时,选择员工的所属部门无法保存的原因

由于使用了paramsPrepareParamsInteceptor拦截器,该拦截器调用的顺序为:

  首先params,然后prepare,接下来modelDriven,最后再params。

    Struts 2.0的设计上要求modelDriven在params之前调用,而业务中prepare要负责准备model,准备model又需要参数,

    这就需要在prepare之前运行params拦截器设置相关参数,这个也就是创建paramsPrepareParamsStack的原因。流程如下:
       1. params拦截器首先给action中的相关参数赋值,如id
       2. prepare拦截器执行prepare方法,prepare方法中会根据参数,如id,去调用业务逻辑,设置model对象,成功创建出employee对象,
       3. modelDriven拦截器将model对象压入value stack,这里的model对象就是在prepare中创建的
       4. params拦截器再将参数赋值给model对象,employee对象再将请求的以name="该对象的属性名"的参数的参数值设置到employee对象中,

      而此时由于该对象的中的department属性也在prepare中的业务方法中一并被查了出来,是一个持久化对象,已经有了id主键,此时页面中所选中的部门名称所实际对

      应的id值,便无法被设置进department对象中,因此最后保存时无法修改部门名称,此时要是想更改该员工的部门名称,只有将由该employee对象查出来的

      employee.department设置为null(在prepare中的业务方法中设置),或者为该department对象new出一个空的新对象,既保证其id为空,即可成功修改员工的所属部门名

      称.          

       5. action的业务逻辑执行 依据此stack,一个action的代码通常如下:

时间: 2025-01-22 00:27:35

保存新员工时,选择员工的所属部门无法保存的原因的相关文章

女程序员如何选择?

最近一个问题很困扰我,今天则得到了答案,也意味着我该选择了. 不知道大家有没有遇到过这样的情况,我是上年刚毕业,大四时进行过java培训,12年9月-13年4月,在这之前已经自学过java.7月份时进入一家公司工作,今年3月份辞职,4月份找到工作,来上班了.一开始就不太喜欢公司氛围,前台,hr,态度什么的都不太好,工作环境也极像客服部,整天电话不断,讨论声不断,第一个星期真是煎熬,去了两三天之后有辞职的想法,但是后面想想还是算了,公司待遇还可以. 但是进入到公司后leader让学PHP,学PHP

程序员如何选择技术方向

程序员如何选择技术方向 池建强12月09日 17:53 分享到: 程序员 技术方向 分类 : 互联网 摘要 : 程序员三部曲之第三篇「程序员如何选择技术方向」——两个励志小故事 http://chijianqiang.baijia.baidu.com/article/39179 最近写了「当程序员老去」「程序员真正的价值」两篇文章,传播甚广,今天是第三篇:「程序员如何选择技术方向」,史称「程序员三部曲」. 那之前写的几篇程序员文章算什么呢?算前传吧.以后再写程序员文章算什么呢?算后记吧. 200

不要再迷茫了,程序员如何选择技术方向

最近写了「当程序员老去」「程序员真正的价值」两篇文章,传播甚广,今天是第三篇:「程序员如何选择技术方向」,史称「程序员三部曲」. 那之前写的几篇程序员文章算什么呢?算前传吧.以后再写程序员文章算什么呢?算后记吧. 2008年秋天的一个午后,温暖的阳光透过落地窗落在我面前这个长长的写字桌上,桌子对面坐的是一个瘦小的程序员,他的名字叫小明,小明有些茫然,他看着我,不知道该说些什么. 程序员都是很严谨的,我不得不首先发出一个 System Call: 你在客户现场这半年做什么工作? 写单元测试. 还有

选择员工要有3S能力

企业的核心竞争力依托于高素质的员工.不断地对员工进行培训.提升并管理好员工,是让企业持续散发活力的一剂良药. 在企业里,有个说法叫三个房子有一个柱子,第一个是以人为本,怎么样吸引最优秀的员工:第二个是有利润的增长:第三个就是品牌认可.其中以人为本最为重要,假如有优秀的员工,企业一定会增长,一定会赚钱,打造的品牌一定会有吸引力. 选择员工要有3个S的能力,即自信(self-confident).速度(speed).简单化(simplification).第一个S自信:一个事情,如果员工自己都没有自

ObjectARX2010 学习笔记001:在新数据库中创建直线并将此数据库保存成DWG文件

static void swtArxProject5createLine(void) { // Add your code for command swtArxProject5.createLine here //创建新的CAD数据库 AcDbDatabase *pDb=new AcDbDatabase(); //定义块表指针 AcDbBlockTable *pBlkTbl; //获取块表 pDb->getSymbolTable(pBlkTbl,AcDb::kForRead); //定义块表记录

程序员的选择-真实的故事

选择做为程序员这条道路已经快7年了,其中面临过各种各样的方向选择,也不存在什么对与错,能开心的生活就好. 故事一: 去年认识一个另外公司的技术负责人A,06年毕业,毕业后一直在做linux内核驱动开发.因为一个安卓APP项目,他们公司和我们公司有过一些合作.当时我负责APP与硬件端的Socket通讯方面模块开发,他负责硬件部分的通讯模块.就这样两个人一起喝了几次酒后开始变得熟悉起来.他说他厌恶透了linux内核开发,无聊的代码,无聊的项目,而且很难看到自己的成果物.他特别想做安卓等上层应用的开发

新框架的选择

一个新框架的选择之路:     一.考虑前后端的交互方式的实现及兼容性,ajax的实现. 二.考虑UI框架的实用性 三.考虑开发.部署方式.这个很重要 四.易维护. 五.less.sass的支持. 软件的开发 一.前后端的设计登录信息的记录方式,交互方式 二.安全性 三.成本比较低,项目容易维护. 原文地址:https://www.cnblogs.com/yiyi17/p/8604377.html

查询出部门名称、部门的员工数、部门的平均工资、部门的最低收入雇员姓名和最高收入雇员的姓名

如题: 查询出部门名称.部门的员工数.部门的平均工资.部门的最低收入雇员姓名和最高收入雇员的姓名 这是oracle的默认Scott用户下面的emp 和 dept 表间的一道思考题. 雇员表(emp) 记录了每个雇员的基本信息 NO  字段         类型            描述 1     empno       Number(4)    雇员编号 2     ename       Varchar2(10)      雇员姓名 3     job         Varchar2(9

支付宝+微信双料前员工:支付宝大改版的真正原因(连载一)博客园

支付宝+微信双料前员工:支付宝大改版的真正原因(连载一) 编者按:本文首发于公众号”(ID:shensing).作者陆树燊,创业者,微信创始团队成员,前支付宝资深产品经理.本文为支付大战简史系列连载一,在后续的文章里,作者会从双方产品优劣.红包大战全过程.线下支付大战过程.支付宝何去何从等各个方面和大家分享观点. 前言 昨天(8 月 11 日)支付宝 App 迎来了它的又一次涅槃——是的,它又一次大改版了. 我看到很多评论文章,大家都在讨论支付宝的改版如何如何,也有人说:支付宝要做社交很简单,只