修改联系人列表页面上的链接地址

编写LinkManAction的edit方法

首先,我们要在LinkManAction类中编写一个跳转到联系人编辑页面的方法。在该方法中,我们不仅要查询出某个联系人,而且还要查询出所有客户。查询出来联系人对象和代表所有客户的List<Customer>集合之后,需要跳转到联系人编辑页面(edit.jsp),回显联系人对象中携带的数据,其中,联系人编辑页面(edit.jsp)中的所属客户下拉列表中的数据就来源于List<Customer>集合。现在问题的关键点是怎么把联系人对象和List<Customer>集合带到联系人编辑页面(edit.jsp)中去呢?将List<Customer>集合传递到联系人编辑页面(edit.jsp)中,其实很简单,手动将List<Customer>集合压栈即可。

将联系人对象传递到联系人编辑页面(edit.jsp)中一共有两种方式,下面我会分别介绍它们。

  • 第一种方式:手动将联系人对象压栈。

    如果我们使用的是这种方式,那么怎么回显联系人对象中携带的数据呢?可以在联系人编辑页面(edit.jsp)中使用Struts2里面的标签回显数据,例如,在edit.jsp页面中回显联系人名称时,可以写成下面这样:
  • 第二种方式:其实这个联系人对象就是模型驱动使用的对象,而模型驱动使用的对象默认就在栈顶(这是因为Action类的引用就是栈顶元素),所以,我们可以利用这一特性来回显数据。如果我们使用的是这种方式,那么LinkManAction类中的edit方法就要写成下面这个样子:

    此时,怎么回显联系人对象中携带的数据呢?可以在联系人编辑页面(edit.jsp)中使用Struts2里面的标签回显数据,例如,在edit.jsp页面中回显联系人名称时,可以写成下面这样:

这里,我会使用上面讲述的第一种方式,在联系人编辑页面(edit.jsp)中回显数据。编写好LinkManAction的edit方法之后,我们还得在Struts2配置文件中(即struts.xml)对LinkManAction进行如下的配置,即点击修改超链接之后,要跳转到联系人编辑页面(edit.jsp)中。

在联系人编辑页面中回显数据

复制一份联系人添加页面(add.jsp),将其重命名为edit.jsp,以此作为联系人编辑页面。因为在上一讲中,我们就已经对add.jsp页面做了一些修改,比如将普通的form表单改为Struts2框架里面的<s:form>表单,然后将里面所有的文本输入框都改成了Struts2框架里面的标签,所以,edit.jsp页面无需做任何修改,便可以很方便地进行数据回显。

编写代码实现修改联系人的功能

在联系人编辑页面(edit.jsp)中回显了客户的数据后,接下来,我们就要正式编写代码实现修改联系人的功能了。

修改联系人编辑页面中的提交路径

首先,修改联系人编辑页面中表单的提交路径。

然后,在要提交的表单中添加如下的一个隐藏字段,即联系人ID,在将表单提交到服务端时,也要将表单中隐藏的联系人ID给传递过去。

编写web层

首先,我们要在LinkManAction类中编写一个修改联系人的方法。

然后,我们还得在Struts2配置文件中(即struts.xml)对LinkManAction进行如下的配置,即修改联系人成功后,直接重定向到联系人列表展示页面中。

编写service层

首先,在LinkManService接口中添加一个修改联系人的方法声明,如下:

package com.meimeixia.crm.service;import org.hibernate.criterion.DetachedCriteria;import com.meimeixia.crm.domain.LinkMan;
import com.meimeixia.crm.domain.PageBean;/*** 联系人的业务层的接口* @author liayun**/
public interface LinkManService {PageBean<LinkMan> findAll(DetachedCriteria detachedCriteria, Integer currentPage, Integer pageSize);void save(LinkMan linkMan);LinkMan findById(Long lkm_id);void update(LinkMan linkMan);void delete(LinkMan linkMan);}

然后,在以上接口的一个实现类(LinkManServiceImpl.java)中实现修改联系人的方法。

package com.meimeixia.crm.service.impl;import java.util.List;import org.hibernate.criterion.DetachedCriteria;
import org.springframework.transaction.annotation.Transactional;import com.meimeixia.crm.dao.LinkManDao;
import com.meimeixia.crm.domain.LinkMan;
import com.meimeixia.crm.domain.PageBean;
import com.meimeixia.crm.service.LinkManService;/*** 联系人的业务层的实现类* @author liayun**/
@Transactional
public class LinkManServiceImpl implements LinkManService {//注入daoprivate LinkManDao linkManDao;public void setLinkManDao(LinkManDao linkManDao) {this.linkManDao = linkManDao;}//业务层来分页查询联系人的方法@Overridepublic PageBean<LinkMan> findAll(DetachedCriteria detachedCriteria, Integer currentPage, Integer pageSize) {PageBean<LinkMan> pageBean = new PageBean<LinkMan>();//设置当前页数pageBean.setCurrentPage(currentPage);//设置每页显示的记录数pageBean.setPageSize(pageSize);//设置总记录数Integer totalCount = linkManDao.findCount(detachedCriteria);pageBean.setTotalCount(totalCount);//设置总页数double tc = totalCount;Double num = Math.ceil(tc / pageSize);pageBean.setTotalPage(num.intValue());//设置每页显示数据的集合Integer begin = (currentPage - 1) * pageSize;List<LinkMan> list = linkManDao.findByPage(detachedCriteria, begin, pageSize);pageBean.setList(list);return pageBean;}//业务层保存联系人的方法@Overridepublic void save(LinkMan linkMan) {linkManDao.save(linkMan);}//业务层根据id去查询联系人的方法@Overridepublic LinkMan findById(Long lkm_id) {return linkManDao.findById(lkm_id);}//业务层修改联系人的方法@Overridepublic void update(LinkMan linkMan) {linkManDao.update(linkMan);}//业务层删除联系人的方法@Overridepublic void delete(LinkMan linkMan) {linkManDao.delete(linkMan);}}

编写dao层

首先,在LinkManDao接口中添加一个修改联系人的方法声明,如下:

package com.meimeixia.crm.dao;import java.util.List;import org.hibernate.criterion.DetachedCriteria;import com.meimeixia.crm.domain.LinkMan;/*** 联系人的dao的接口* @author liayun**/
public interface LinkManDao {Integer findCount(DetachedCriteria detachedCriteria);List<LinkMan> findByPage(DetachedCriteria detachedCriteria, Integer begin, Integer pageSize);void save(LinkMan linkMan);LinkMan findById(Long lkm_id);void update(LinkMan linkMan);void delete(LinkMan linkMan);}

然后,在以上接口的一个实现类(LinkManDaoImpl.java)中实现修改联系人的方法。

package com.meimeixia.crm.dao.impl;import java.util.List;import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Projections;
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;import com.meimeixia.crm.dao.LinkManDao;
import com.meimeixia.crm.domain.LinkMan;/*** 联系人的dao的实现类* @author liayun**/
public class LinkManDaoImpl extends HibernateDaoSupport implements LinkManDao {//dao中统计个数的方法@Overridepublic Integer findCount(DetachedCriteria detachedCriteria) {detachedCriteria.setProjection(Projections.rowCount());List<Long> list = (List<Long>) this.getHibernateTemplate().findByCriteria(detachedCriteria);if (list.size() > 0) {return list.get(0).intValue();}return null;}//dao中分页查询联系人的方法@Overridepublic List<LinkMan> findByPage(DetachedCriteria detachedCriteria, Integer begin, Integer pageSize) {//首先要把count(*)语句给清空掉detachedCriteria.setProjection(null);List<LinkMan> list = (List<LinkMan>) this.getHibernateTemplate().findByCriteria(detachedCriteria, begin, pageSize);return list;}//dao中保存联系人的方法@Overridepublic void save(LinkMan linkMan) {this.getHibernateTemplate().save(linkMan);}//dao中根据id去查询联系人的方法@Overridepublic LinkMan findById(Long lkm_id) {return this.getHibernateTemplate().get(LinkMan.class, lkm_id);}//dao中修改联系人的方法@Overridepublic void update(LinkMan linkMan) {this.getHibernateTemplate().update(linkMan);}//dao中删除联系人的方法@Overridepublic void delete(LinkMan linkMan) {this.getHibernateTemplate().delete(linkMan);}}

至此,联系人管理模块中修改联系人的功能,我们就已经实现了,至于测试的话,我就不再这里测试了(偷懒了),反正是好使的!

CRM客户关系管理系统开发第十三讲——实现联系人管理模块中修改联系人的功能相关推荐

  1. CRM客户关系管理系统开发第十八讲——实现客户拜访记录管理模块中保存客户拜访记录的功能

    跳转到客户拜访记录添加页面 要想实现客户拜访记录管理模块中的保存客户拜访记录的功能,首要前提就是点击新增客户拜访超链接之后要能跳转到客户拜访记录添加页面.前面我们都做完两个模块了,做到这一点还不是依葫 ...

  2. CRM客户关系管理系统开发第十九讲——实现客户拜访记录管理模块中条件查询客户拜访记录列表的功能

    在客户拜访记录列表页面上准备一些筛选条件 首先,咱得在客户拜访记录列表页面上准备一些筛选条件,不妨我们按照拜访时间来进行筛选.之前咱在实现联系人管理模块中条件查询联系人列表的功能时,文本输入框使用的是 ...

  3. java计算机毕业设计-移动公司crm客户关系管理系统开发与实现-源程序+mysql+系统+lw文档+远程调试

    java计算机毕业设计-移动公司crm客户关系管理系统开发与实现-源程序+mysql+系统+lw文档+远程调试 java计算机毕业设计-移动公司crm客户关系管理系统开发与实现-源程序+mysql+系 ...

  4. CRM客户关系管理系统开发第一讲——搭建开发环境

    这个小项目是我们学习完Spring,Hibernate,Struts2这三个框架后,为了加深对它们的理解所做的SSH项目,为CRM客户关系管理系统. CRM客户关系管理系统的概述 什么是CRM客户关系 ...

  5. CRM客户关系管理系统开发第十七讲——实现客户拜访记录管理模块中分页查询客户拜访记录列表的功能

    在CRM客户关系管理系统中,客户的拜访是很重要的一个环节,由业务员面见客户并介绍公司的相关的业务,在业务员回到公司以后,需要对此次的拜访的整个过程记录下来,记录中需要包含拜访的客户的姓名,拜访的时间以 ...

  6. 电销CRM客户关系管理系统开发12大核心功能

    电销CRM管理系统软件是一款专门针对电销行业开发的客户关系管理软件,它能够帮助企业实现对顾客信息的可视化,智能化,自动化管理,提高电销效率和客户满意度.电销行业在传统互联网营销,新媒体营销,短视频营销 ...

  7. CRM客户关系管理系统开发第二讲——实现用户的注册和登录功能

    实现用户注册功能 创建用户表 首先创建一个数据库(例如crm),并在该数据库下新建一张用户表,笔者这里使用的数据库是MySQL. create database crm; use crm;CREATE ...

  8. 开发CRM客户关系管理系统需要多少钱

    现阶段各个领域都少不了和客户相处,所以也必须对住户关联进行监管,跟踪业务流程进度情况,促使协作.伴随着现代科技的高速发展,及其管理模式的兴起,CRM客户关系管理系统开发逐步完善,而且在销售工作普及化. ...

  9. Java Web项目源代码|CRM客户关系管理系统项目实战(Struts2+Spring+Hibernate)解析+源代码+教程

    客户关系管理 (CRM) CRM一般指客户关系管理 客户关系管理是指企业为提高核心竞争力,利用相应的信息技术以及互联网技术协调企业与顾客间在销售.营销和服务上的交互,从而提升其管理方式,向客户提供创新 ...

最新文章

  1. 大数据-spark-hbase-hive等学习视频资料
  2. OpenGL从入门到精通--纹理
  3. 反病毒引擎设计全解(三)
  4. MyEclipse 打包和发布的个人总结 .
  5. easyui 修改单元格内容_初学Excel办公软件快速修改文字的方法
  6. Proteus仿真单片机:51单片机的仿真
  7. mysql blob 比较_与MSSQL对比学习MYSQL的心得(四)--BLOB数据类型
  8. 平衡二叉搜索树的创建
  9. 中世纪判断女巫的方法总结
  10. BackgroundWorker的包装器
  11. 【Lucene】Apache Lucene全文检索引擎架构之中文分词和高亮显示4
  12. 2019-11-07 检查gcc交叉编译器预定义宏(ARM32/ARM64/X86-64)以及对浮点数的支持情况
  13. MATLAB---同态滤波
  14. CRC循环冗余校验码计算器(附C++ 和Qt实现的CRC-16/MODBUS代码)
  15. 欧拉公式求四面体的体积
  16. 错觉图片生成实验 - 闪现的绿点
  17. nodejs 定时任务
  18. cdr 表格自动填充文字_Cdr教程 用CorelDRAW绘制百事可乐标志Logo设计教程
  19. 【校内模拟】简单粗暴的题目(二项式展开)
  20. 卑鄙与高尚,理想与现实

热门文章

  1. 小黑客,2020还没有邀请码注册 hackthebox ?reCAPTCHA验证码加载不出来?
  2. pptp中的pac与pns
  3. The trip on Taiwan
  4. dotnet 从零开始写一个人工智能 从一个神经元开始
  5. 英文字母替换加密(大小写转换+后移1位)
  6. 关于chef的安装的使用
  7. Visio安装问题解决:office即点即用安装程序
  8. 2021河南省ICPC省赛总结
  9. coffee-script运行环境
  10. PS设计稿如何在手机中快速预览?