jsp页面执行增删等操作之后返回列表页面带上开始的列表查询条件

[url]http://www.zjsyc.com/blog/article/J2EE/300.html[/url]


上面提到的这种方式使用的时候的局限性很大,下面再介绍两种方式:

1、思路:删除的时候采用ajax实现异步操作(调用采用ajax编写方法实现删除,而不是超链接),调用后台连接处理删除,删除完了之后后台不作任何跳转(return null;),响应返回到页面上的ajax请求方法,然后提交页面上的查询表单,页面自动查询刷新(并且会带上刚开始的查询条件),示例如下:

driverList.jsp里面的删除按钮定义:
						<c:if test="${my:hasPermission(login.id,'driverinfomgr',3) }">
<a href="javascript:del('${driver.idCard}');" ><img src="img/ico_3.gif" width="15" height="16" alt="删除"/></a>
</c:if>


driverList.jsp里面的ajax异步删除操作方法:
	
<script type="text/javascript">
function del(id) {
if (window.confirm("确认删除?")) {
$.ajax({
url: "delDriver.do",
data:{"driver.idCard":id},
cache: false,
success: function() {
window.location.reload(true);
alert("删除司机信息成功!");
//提交查询表单,此时页面上的查询数据还在
document.forms[0].submit();
},
error: function() {
alert("删除司机信息失败!");
//提交查询表单,此时页面上的查询数据还在
document.forms[0].submit();
}
});
}
}
</script>


delDriver.do对应的Action方法:
	// 删除司机信息
public String delDriver() throws Exception {

try {
// String id = driver.getId();
String idCard = driver.getIdCard();
driverManager.delDriver(idCard);
WriteSystemLog.writeLogSuccess(DriverAction.class, "删除司机信息", this
.getUserInfo());
} catch (Exception e) {
WriteSystemLog.writeLogError(DriverAction.class, "删除司机信息", this
.getUserInfo());
e.printStackTrace();
}
return null;
}



2、思路:采用session来存放起初的查询信息,一般的列表页面初始化和列表页面上面的查询功能用的都是同一个请求链接(Action里面调用同一个方法);并且一般的增删改查的功能方法和上面的页面初始化以及页面上方的查询功能的方法都在同一个Action里面。列表页面上每条记录后面的增删改查等各种功能完成之后都要返回到列表页面上(各种功能操作完成之后都会调用初始化列表或是列表页面上方的查询功能对应的链接)。那么我们现在在初始化列表前面再加一个和session相关的操作方法,在这个方法里面我们将界面传上来的查询信息存放到session里面(页面上方的查询功能也会调用此方法),然后在这个方法里面再调用原来的初始化列表链接方法,之后返回到列表页面上【重点:对于增删改查等每条记录后面的各种操作都不会调用这个新加的session相关的方法,它们各自执行操作完成之后返回列表页面直接调用原来的旧的列表链接方法即可;只有列表页面初始化以及列表上方的查询功能调用此方法,在struts2中调用需要重新配置一个链接】。下面是一个使用示例:

假如新加的session相关的方法是openSession()方法,原来的旧的初始化列表页面方法为open()方法,下面是代码示例:

列表页面index.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@include file="/jsp/common/common.jsp" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<script language="javascript" src="js/public.js"></script>
<title>用户管理</title>
<script type="text/javascript" src="js/jquery-1.7.2.min.js"></script>
<script src="js/datepicker/WdatePicker.js" defer="defer"></script>
<link href="skins/default.css" rel="stylesheet" />
<script src="js/artDialog/artDialog.js?skin=default"></script>
<script src="js/artDialog/plugins/iframeTools.source.js"></script>
<script src="js/showDialog.js"></script>
<script src="jsp/module/js/module.js"></script>
<script src="js/jilian_xm.js"></script>

<link rel="stylesheet" href="css/print.css" type="text/css" media="print" />
<link href="css/style.css" rel="stylesheet" type="text/css">
<link href="css/displaytag.css" rel="stylesheet" type="text/css">
<style>
body {
background: #cddff5;
}

.floatLmargR20 {
float: left;
margin-right: 10px;
line-height: 28px;
height: 28px;
}
</style>
<style type="text/css" media="all">
@import url("css/maven-base.css");
@import url("css/maven-theme.css");
@import url("css/site.css");
@import url("css/screen.css");
</style>

<script type="text/javascript">
$(function(){
jQuery("#person tr:even").addClass("demoBg");
});


function _subLogForm(){
jQuery("#_userForm").submit();
}
</script>

</head>
<body>

<div class="jcxxserch" >
<form action="user.do" method="post" id="_userForm" >
<table width="100%" class="jcxxserchtlb">
<tr>
<td>
<label>姓名</label>
<input type="text" value="${nps.name }" name="person.name" id='_name'>
</td>
<td>

<label>区县</label>
<select style="width:80px" name="person.city" id="jilian_county" onchange="jilianchange();">
<%-- <option value="-1">--请选择--</option>--%>
<%-- <c:forEach items="${cityMap }" var="city">--%>
<%-- <option value="${city.key }">${city.value }</option>--%>
<%-- </c:forEach>--%>
<option value="-1">--请选择--</option>
<%-- <c:if test="${login.orgcode == 140600}">--%>
<%-- <option value="140600">朔州市</option>--%>
<%-- </c:if>--%>
<c:forEach items="${area }" var="city">
<option value="${city.key }">${city.value }</option>
</c:forEach>
</select>
</td><td>

<label>站点类型</label>
<select name="person.staionType" style="width:80px" id="jilian_type" onchange="jilianchange();"><%--
<option value="-1">--请选择--</option>
--%><option value="3">治超办</option>
<%--
<option value="0">公路检测站</option>
<option value="2">源头企业</option>
<option value="1">移动车</option>

--%></select>
</td><td>
<label>站点</label>
<select name="person.station" style="width:250px" id="jilian_station">
<option value="-1">--请选择--</option>
<c:forEach items="${listsite }" var="ssss">
<option value="${ssss.code }">${ssss.name }</option>
</c:forEach>
</select>
</td>
<td><a href="#" class="txtLeft"><img onclick="_subLogForm();" src="img/serch.gif" width="76" height="22" border="0" /></a></td>
</tr>
</table>
</form>
</div>

<c:if test="${my:hasPermission(login.id,'user',1) }">
<div class="jcxxdata"><br>
<display:table class="jcxxserchtlb" id="person" name="list" pagesize="10" requestURI="user.do" style="width:100%;height:100%;" defaultsort="1">
<display:column sortable="true" headerClass="sortable" title="序号" comparator="com.winner.permissions.util.DisplayTagIdComparator">
${person_rowNum }
</display:column>
<display:column property="name" sortable="true" headerClass="sortable" title="姓名"></display:column>
<display:column sortable="true" headerClass="sortable" title="性别">
${person.sex=="0" ? "男" :"女" }
</display:column>
<display:column property="org.name" sortable="true" headerClass="sortable" title="所属区县"></display:column>
<display:column property="danWei" sortable="true" headerClass="sortable" title="所属单位"></display:column>
<display:column property="user.username" sortable="true" headerClass="sortable" title="登录帐号"></display:column>
<display:column property="user.expireTime" format="{0,date,yyyy-MM-dd}" sortable="true" headerClass="sortable" title="失效时间" ></display:column>
<display:column property="role" sortable="true" headerClass="sortable" title="角色" ></display:column>
<display:column title="操作" media="html">
<c:choose>
<c:when test="${not empty person.user }">
<c:if test="${my:hasPermission(login.id,'user',2) }">
分配帐号
</c:if>
<c:if test="${my:hasPermission(login.id,'user',3) }">
<a href="#" onclick="delObj('delUser.do?id=${person.user.id }','userListFirst.do','帐号');">删除帐号</a>
</c:if>

<c:if test="${my:hasPermission(login.id,'user',2) }">
<a href="#" onclick="showDialog('updateInputUser.do?id=${person.user.id }',300,180,'修改帐号信息');">修改帐号</a>
</c:if>

<c:if test="${my:hasPermission(login.id,'user',2) }">
<a href="#" onclick="showDialog('userRoleList.do?id=${person.user.id }',400,300,'分配角色','addInputUser');">分配角色</a>
</c:if>

</c:when>
<c:otherwise>
<c:if test="${my:hasPermission(login.id,'user',2) }">
<a href="#" onclick="showDialog('addInputUser.do?personId=${person.id }',350,200,'分配帐号');">分配帐号</a>
</c:if>
<c:if test="${my:hasPermission(login.id,'user',3) }">
删除帐号
</c:if>
<c:if test="${my:hasPermission(login.id,'user',2) }">
修改帐号
</c:if>
<c:if test="${my:hasPermission(login.id,'user',2) }">
分配角色
</c:if>
</c:otherwise>
</c:choose>
</display:column>
<display:setProperty name="sort.amount" value="list"/>
</display:table>
</div>
</c:if>
</body>

</html>
<script>
$("#jilian_county").find("option[value='${nps.city}']").attr("selected",true);
$("#jilian_type").find("option[value='${nps.staionType}']").attr("selected",true);
$("#jilian_station").find("option[value='${nps.station}']").attr("selected",true);
</script>


新加的session相关方法,openSession(),person为存放查询条件的实体:
	public String openSession() throws Exception {
this.getSession().setAttribute("person", person);
open();
return SUCCESS;
}


openSession()的配置信息:
		<action name="user" class="userActionBean" method="openSession">
<result name="success" type="dispatcher">
/jsp/user/index.jsp
</result>
</action>


原来的旧的初始化列表页面以及查询功能对应方法,open(),:
	//首页,显示人员列表
@SuppressWarnings({ "unchecked", "rawtypes" })
public String open() throws Exception
{
//cityMap = (Map<String, String>) this.getSession().getAttribute("area");
if (this.getSession().getAttribute("person") != null) {
this.person = (Person)this.getSession().getAttribute("person");
}
Map<String,String> map = this.userManager.getAllOrg();
this.getRequest().setAttribute("cityMap", map);
//取站点,源头,移动检测车等信息
listsite = new ArrayList<SiteShow>();
if(StringUitl.isNullOrEmpty(person)){
String type = person.getStaionType();
if(type.equals("0")){
List<CtrlSite> lsit = this.userManager.getListCtrlSite(person.getCity());
if(StringUitl.isNullOrEmpty(lsit)){
for (CtrlSite cs : lsit) {
if(StringUitl.isNullOrEmpty(cs)){
listsite.add(new SiteShow(cs.getCtrlCode(),cs.getCtrlSiteName()));
}
}
}
}else if (type.equals("1")){
List<MobDet> list = this.userManager.getListMobDet(person.getCity());
if(StringUitl.isNullOrEmpty(list)){
for (MobDet cs : list) {
if(StringUitl.isNullOrEmpty(cs)){
if(StringUitl.isNullOrEmpty(cs)){
listsite.add(new SiteShow(cs.getMobDetCarCode(),cs.getMobDetCarName()));
}
}
}
}
}else if(type.equals("2")){
List<SourceCom> list = this.userManager.getListSourceCom(person.getCity());
if(StringUitl.isNullOrEmpty(list)){
for (SourceCom cs : list) {
listsite.add(new SiteShow(cs.getSourceComCode(),cs.getSourceComName()));
}
}
}else if(type.equals("3")){
List<Zcb> zcblist_= userManager.findByCode(person.getCity());
if(StringUitl.isNullOrEmpty(zcblist_)){
for (Zcb zcb : zcblist_) {
listsite.add(new SiteShow(zcb.getZcbCode(),zcb.getShortName()));
}
}
}
}

List<Person> list = personManager.getPersonList(person,this.getUserInfo(),StringUitl.convertMap2String((Map)this.getSession().getAttribute("area")));
//List<Person> list = personManager.getPersonList();
//将用户拥有的角色提取出来
for(Person p : list){
String role = "";
User user = p.getUser();
if(StringUitl.isNullOrEmpty(user)){
List<UsersRoles> l = userManager.searchUserRoles(user.getId());
if(StringUitl.isNullOrEmpty(l)){
for (UsersRoles obj : l) {
//System.out.println(obj.getRole().getName());
role = obj.getRole().getName()+","+role;
}
}
}
if(role.length() > 0){
role = role.substring(0,role.length()-1);
}
p.setRole(role);
}
this.getRequest().setAttribute("list", list);
this.getRequest().setAttribute("nps", person);
return SUCCESS;
}


open()配置信息:
		<action name="userListFirst" class="userActionBean" method="open">
<result name="success" type="dispatcher">
/jsp/user/index.jsp
</result>
</action>



比如再列举一个列表页面修改操作的相关配置(成功之后是转到userListFirst而不是user):
		<action name="updateUser" class="userActionBean" method="update">
<result name="success" type="redirectAction">
<param name="actionName">userListFirst</param>
</result>
</action>


并且需要注意的是:初始化列表处的链接需要配置成user.do而不是userListFirst.do
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值