03 整合ssm (联系人列表,修改联系人)

【联系人列表】

联系人列表和客户列表类似(分页筛选功能),需要注意的是联系人列表里的所属客户是从客户表中查询得出,所以需要设计一个CstLinkmanVo类,这个vo类和po类唯一的不同就是成员客户名是CstCustomer对象,需要在后面set进来,其余属性用构造方法传入即可

 private CstCustomer lkmCustomer;

【添加联系人】

流程设计

1.用户点击添加联系人超链接,跳转到一个jsp页面(这样在正规开发中是禁止的,应该先访问action或者do,再跳转到jsp页面,因为正规开发的资源都是放在web-inf下面的)

2.该页面效果如上图所示,亮点在选择所属客户,是点击按钮,新开一个页面,从客户列表中获取,这个客户列表和之前单纯显示的客户列表的区别在于右侧的超链接。

3.用户输入添加的联系人相关信息,点击保存即可。

【前端】

点击添加联系人跳转到的add.jsp页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<!-- 标题做一个if判断,使得一个jsp页面既能用于修改,又能用于添加 -->
<TITLE><c:if test="${empty linkman.lkmId}">添加</c:if><c:if
		test="${!empty (linkman.lkmId)}">修改</c:if>联系人</TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<LINK href="${pageContext.request.contextPath }/css/Style.css"
	type=text/css rel=stylesheet>
<LINK href="${pageContext.request.contextPath }/css/Manage.css"
	type=text/css rel=stylesheet>


<META content="MSHTML 6.00.2900.3492" name=GENERATOR>
</HEAD>
<BODY>
	<FORM id=form1 name=form1
		action="${pageContext.request.contextPath }/linkman/addOrEdit.action"
		method=post>


		<TABLE cellSpacing=0 cellPadding=0 width="98%" border=0>
			<TBODY>
				<TR>
					<TD width=15><IMG
						src="${pageContext.request.contextPath }/images/new_019.jpg"
						border=0></TD>
					<TD width="100%"
						background="${pageContext.request.contextPath }/images/new_020.jpg"
						height=20></TD>
					<TD width=15><IMG
						src="${pageContext.request.contextPath }/images/new_021.jpg"
						border=0></TD>
				</TR>
			</TBODY>
		</TABLE>
		<TABLE cellSpacing=0 cellPadding=0 width="98%" border=0>
			<TBODY>
				<TR>
					<TD width=15 background=${pageContext.request.contextPath }
						/images/new_022.jpg><IMG
						src="${pageContext.request.contextPath }/images/new_022.jpg"
						border=0></TD>
					<TD vAlign=top width="100%" bgColor=#ffffff>
						<TABLE cellSpacing=0 cellPadding=5 width="100%" border=0>
							<TR>


								<TD class=manageHead>当前位置:联系人管理 &gt; <!-- 通过if判断,使得这个页面可以同事用于添加和修改 -->
									<c:if test="${empty linkman.lkmId}">添加</c:if> <c:if
										test="${!empty linkman.lkmId}">修改</c:if> 联系人
								</TD>
							</TR>
							<TR>
								<TD height=2></TD>
							</TR>
						</TABLE>
						<TABLE cellSpacing=0 cellPadding=5 border=0>
							<tr>
								<td>所属客户:</td>
								<td colspan="3">
									<!-- 如果是修改联系人,那么在页面加载时这里会填充当前联系人所属的客户id --> <input id="custId"
									type="hidden" value="${linkman.lkmCustomer.custId }"
									name="lkmCustId" style="WIDTH: 180px" /> <!-- 如果是修改联系人,那么在页面加载时这里会显示当前联系人所属的客户姓名 -->
									<input id="custName" type="text"
									value="${linkman.lkmCustomer.custName}" disabled="disabled"
									style="WIDTH: 180px" /> <!-- 这里很重要,点击选择按钮会开一个新窗口,用于显示客户列表
								尤其要注意这个href带了一个select参数过去,这个参数是存放在queryvo中的,
								list.action方法获取queryvo后会把它再转发回jsp页面,这样能让客户列表jsp页面知道是用于选择 
								右边的超链接不再是修改删除了--> <input type="button" value="选择"
									onclick="window.open('${pageContext.request.contextPath }/customer/list.action?select=true','','width=600,height=400')" />
								</td>
							</tr>
							<TR>
								<td>联系人名称:</td>
								<td><!-- 隐藏框放联系人id -->
									<input type="hidden" name="lkmId"
									value="${linkman.lkmId}" /> 
									<INPUT class=textbox id=sChannel2
									value="${linkman.lkmName }" style="WIDTH: 180px" maxLength=50
									name="lkmName"></td>
								<td>联系人性别:</td>
								<td>
									<!-- 单选按钮,if标签用于修改联系人功能 --> <input type="radio" value="1"
									name="lkmGender"
									<c:if test="${linkman.lkmGender=='1' }">checked</c:if>>男
									<input type="radio" value="2" name="lkmGender"
									<c:if test="${linkman.lkmGender=='2' }">checked</c:if>>女
								</td>
							</TR>
							<TR>
								<td>联系人办公电话 :</td>
								<td><INPUT class=textbox id=sChannel2
									value="${linkman.lkmPhone }" style="WIDTH: 180px" maxLength=50
									name="lkmPhone"></td>
								<td>联系人手机 :</td>
								<td><INPUT class=textbox id=sChannel2
									value="${linkman.lkmMobile }" style="WIDTH: 180px" maxLength=50
									name="lkmMobile"></td>
							</TR>
							<tr>
								<td rowspan=2><INPUT class=button id=sButton2 type=submit
									value="保存 " name=sButton2></td>
							</tr>
						</TABLE>


					</TD>
					<TD width=15
						background="${pageContext.request.contextPath }/images/new_023.jpg">
						<IMG src="${pageContext.request.contextPath }/images/new_023.jpg"
						border=0>
					</TD>
				</TR>
			</TBODY>
		</TABLE>
		<TABLE cellSpacing=0 cellPadding=0 width="98%" border=0>
			<TBODY>
				<TR>
					<TD width=15><IMG
						src="${pageContext.request.contextPath }/images/new_024.jpg"
						border=0></TD>
					<TD align=middle width="100%"
						background="${pageContext.request.contextPath }/images/new_025.jpg"
						height=15></TD>
					<TD width=15><IMG
						src="${pageContext.request.contextPath }/images/new_026.jpg"
						border=0></TD>
				</TR>
			</TBODY>
		</TABLE>
	</FORM>
</BODY>
</HTML>

queryvo中添加一个布尔类型,判断客户列表是用于选择还是显示

private Boolean select;

在客户列表jsp里面根据select属性有一个判断,如果select为true,那么右边就会是选择按钮。

<c:if test="${queryVo.select}">
<input type="button" value="选择" onclick="clickSelect('${customer.custId}','${customer.custName}')"/>
</c:if>

问题来了,在客户列表你点击选择按钮,怎么把你选择的客户信息传到添加联系人那边,用一个clickselect函数

function clickSelect(id,name){
		//获取打开的window窗口对象
		var win=window.opener;
		//获取这个窗口的dom对象
		var winDom=win.document;
		//拿到id隐藏域和name域的dom对象
		var custid=winDom.getElementById("custId");
		var custname=winDom.getElementById("custName");
		//设置属性zhi
		custid.value=id;
		custname.value=name;
		close();
		
	}

【后端】

控制层

@Controller
@RequestMapping("linkman")
public class LinkmanController {
	@Autowired
	private LinkmanService linkmanservice;
	//添加和修改公用一个action
	@RequestMapping("/addOrEdit.action")
	public String addOrEdit(CstLinkman linkman) {
		System.out.println(linkman);
		//根据是否携带联系人id判断是添加还是修改
		if(linkman.getLkmId()!=null){
			
			linkmanservice.update(linkman);
		}else{
			
			linkmanservice.save(linkman);
		}

		return "redirect:/linkman/list.action";

	}

【修改联系人】

流程

1.用户在联系人列表点击修改链接,会携带一个联系人id访问toEdit.action,控制层调用service层方法查询这个联系人id对应的信息,在service层做po转vo处理,需要注意返回的是vo对象,即vo对象中的客户成员属性是客户对象而非单纯客户id。vo对象返回到add.jsp页面(这个页面修改和添加共存)

2.(add.jsp)修改页面

参见之前的add.jsp

<!-- 如果是修改联系人,那么在页面加载时这里会填充当前联系人所属的客户id -->
<input id="custId" type="hidden" value="${linkman.lkmCustomer.custId }" name="lkmCustId" style="WIDTH: 180px"/>
<!-- 如果是修改联系人,那么在页面加载时这里会显示当前联系人所属的客户姓名 -->
<input id="custName" type="text" value="${linkman.lkmCustomer.custName}"  disabled="disabled"  style="WIDTH: 180px"/>

用户修改完点击保存按钮,即访问控制层的修改方法,完成修改。

猜你喜欢

转载自blog.csdn.net/qq_36194262/article/details/84962299
今日推荐