【SSH项目实战】国税协同平台-25.查询条件回显

我们上次完成了信息发布管理模块的条件查询功能,但是我们有一些问题没有解决,比如信息的"回显"功能。

解释一下回显,例如你翻到100页,这一页有一个信息需要修改,当你点击修改并修改完毕的时候,发现并没有回到之前的第100页,而是回到了第1页!!你是不是就抓狂了?而且你在输入框中的的查询条件也可能改变或消失,这就是没有做数据回显的后果。所以,我们要为我们的这个模块做数据回显功能。

我们去分类查询的依据就是info.title值,如果有,我们就按照那个排序并列出结果,如果没有我们就去取所有的,当我们点击“编辑”“删除”等操作的时候,返回的是InfoAction中的listUI方法,并没有带任何参数过去,那么listUI方法检测到没有info.title参数,那么就会列出所有的结果,到时我们的原来的查询结果丢失。

究其最原始的原因,其实是“重定向”惹的祸。因为“重定向”是转向新的一个jsp页面,后台是不带任何值过去的(包括request都是新的)。我们的info.title就是在重定向过程中丢失的。

我们现在来解决参数丢失的问题来解决“回显”功能。

我们在info的struts配置文件中的list重定向配置中添加一个参数“info.title”:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
	<package name="info-action" namespace="/tax" extends="base-default">
		<action name="info_*" class="cn.edu.hpu.tax.info.action.InfoAction" method="{1}">
			<result name="{1}">/WEB-INF/jsp/tax/info/{1}.jsp</result>
			<result name="list" type="redirectAction">
				<param name="actionName">info_listUI</param>
				<param name="info.title">${info.title}</param>
                                <param name="encode">true</param><!-- 需要编码 -->
			</result>
		</action>
	</package>
</struts>

然后在接收info.title的时候我们进行解码:

info.setTitle(URLDecoder.decode(info.getTitle(),"utf-8"));

这样我们每次在重定向的时候就会将这个参数一并传过去,我们的搜索结果又会重新回显出来。

测试:
搜索“1”:

结果:

编辑一个

点击“返回”后结果:

说明我们的回显暂时完成,但是我们还有问题:

当我们搜索“测试”的时候,出现以下结果:

然后我们点击“新增”:
添加标题是“新闻前线11”,然后点击保存:

保存之后返回的是这样的结果;

很显然这不是我们需要的,我们需要的是之前搜索“测试”的时候的结果列表,这里是因为我们新增的info.title覆盖了原来的info.title条件。

我们解决这个问题。
既然我们的info.title会因为增删改而改变,那么我们就把之前的info.title保存在一个临时变量里,不管之后info.title或者info再发任何改变,我们之前搜索使用的info.title值都不会再丢失或覆盖:
这里我们在InfoAction中把这个临时变量设为:

private String strTitle;

public String getStrTitle() {
	return strTitle;
}
public void setStrTitle(String strTitle) {
	this.strTitle = strTitle;
}

然后在InfoAction中的新增页面跳转方法addUI、编辑页面跳转方法editUI、删除方法delete以及异步信息发布publicInfo方法中添加此代码(创建或更新、取得info前):

//解决查询条件覆盖的问题
strTitle=info.getTitle();

然后我们在“编辑”“新增”的填写数据的页面把strTitle值当做隐藏数据放置在jsp页面中,当点击“修改”和“保存”的时候会随之一传至列表界面,就可以带着原来的查询条件回显了。

<s:hidden name="strTitle"/>

然后修改我们的struts的配置文件,将info.title的引用值改为strTitle:

<result name="list" type="redirectAction">
	<param name="actionName">info_listUI</param>
	<param name="info.title">${strTitle}</param>
	<param name="encode">true</param><!-- 需要编码 -->
</result>

我们测试一下:
我们搜索“测试”:

然后点击新增,新增一个叫“新闻摘要22”的文章:

点击保存之后跳转至这个页面:

点击编辑,将"测试1"改为"测试12"

点击保存之后跳转至这个页面:

说明我们的查询条件不在随增删修而发生改变,我们的查询条件回显算是圆满完成了!

下面就是我们发生这个问题的整体原因总结:

至此我们的查询条件回显功能完成。

我们的页面也需要回显,不能因为编辑完回退到第一页而不是刚刚点编辑的那一页,究其原因是我们没有将当前页码pageNo参数传递过去,所以我们在每一个编辑页面都将pageNo作为隐式参数包含进去:

<s:hidden name="pageNo"/>

在进行list重定向的时候我们也把pageNo给包含进去,这里在info-struts.xml中去配置(就是下面的<param name="pageNo">${pageNo}</param>这一句):

<result name="list" type="redirectAction">
	<param name="actionName">info_listUI</param>
	<param name="info.title">${strTitle}</param>
        <param name="pageNo">${pageNo}</param>
	<param name="encode">true</param><!-- 需要编码 -->
</result>

这样就再也不会发生你翻到100页,修改其中某个信息的保存或回退时候,发现并没有回到之前的第100页,而是回到了第1页这种抓狂的情况。

转载请注明出处:http://blog.csdn.net/acmman/article/details/49903111

时间: 2024-08-24 13:25:09

【SSH项目实战】国税协同平台-25.查询条件回显的相关文章

【SSH项目实战】国税协同平台-32.我要投诉功能2

我们接下来做投诉信息的保存工作 我们先来想一下,我们的整个投诉的流程是: 1.保存投诉信息 2.提示用户投诉成功 3.刷新父窗口 4.关闭当前窗口 我们来画一下时序图(对象与对象之间的消息在时间顺序上的交互): 我们现在要做的是第9步之后的步骤 我们回顾一下我们的投诉信息填写界面: <%@ page contentType="text/html;charset=UTF-8" language="java" %> <% pageContext.set

【SSH项目实战】国税协同平台-1.项目介绍

项目介绍 1.1项目背景 国税协同办公平台包括了行政管理.后勤服务.在线学习.纳税服务.我的空间等几个子系统:我们本次主要的开发功能是纳税服务子系统的部分模块和基于纳税服务子系统信息的个人工作台首页.纳税服务子系统是办税PC前端或移动端的后台管理系统,主要包括的功能有系统角色管理.用户管理.信息发布管理.投诉受理.纳税咨询.易告知.服务预约.服务调查等模块. 系统的主界面: 我们要做的模块界面: 1.2项目前期 项目前期:一般是由客户经理从客户那边了解到有关该项目的招标信息,然后开发公司再组织竞

【SSH项目实战】国税协同平台-24.条件查询分析与实现

我们之前做好了信息发布管理这一块的功能 这次我们就以这个模块为例,去为其添加查询和分页功能. 我们先从查询功能做起: 条件查询(QueryHelper): 1.查询条件语句hql: from 子句:必定出现:而且只出现一次 where 子句:可选:但关键字where 出现一次:可添加多个查询条件 order by子句:可选:但关键字order by 出现一次:可添加多个排序属性 2.查询条件值集合: 出现时机:在添加查询条件的时候,?对应的查询条件值 例子: FROM Info WHERE ti

【SSH项目实战】国税协同平台-29.投诉受理查询

我们之前已经成功创建了数据库,现在我们要对建好的表使用"逆向工程"来创建相应的实体类以及映射文件. 我们的"逆向工程"在第五阶段"5.逆向工程.txt"章中已经详细阐述过,这里的过程就不再赘述. 首先我们还是调出我们的DB Browser,然后找到我们的数据库连接,找到要逆向工程的两张表,点击右键,选择"hibernate Reverse Engineering..."之后就会弹出以下对话框: 做出相应的操作之后,我们的实体类

【SSH项目实战】国税协同平台-14.系统、子系统首页&amp;amp;登录功能1

我们做完了用户与角色的分配,在设置用户在相应的角色下的操作之前,我们先完成用户的登录功能. 首先,我们先加载我们的系统的首页和子首页.很简单,就是转发到一个jsp页面而已,我们先写一个HomeAction来设置跳转功能: package cn.edu.hpu.tax.core.action; import com.opensymphony.xwork2.ActionSupport; public class HomeAction extends ActionSupport{ //跳转到首页 pu

【SSH项目实战】国税协同平台-31.我要投诉功能1

我们之前完成了投诉回复和保存功能,这次我们将要完成历史受理信息的显示 以及数据回显功能,当然还有用户编写投诉信息的入口,我们这次继续. 可以注意到,在deilUI.jsp上我们之前的投诉人信息显示,不管是匿名还是不匿名,投诉人的姓名.手机号码都是显示出来的: <tr> <td class="tdBg">投诉人姓名:</td> <td><s:property value="complain.compName"/&g

【SSH项目实战】国税协同平台-26.分页功能编写

可以看到,我们之前的用户管理.角色管理和信息发布管理的列表下均有这些东西: 总共1条记录,当前第 1 页,共 1 页    上一页  下一页 到  这个就是美工留给我们做分页的,我们接下来就以信息发布管理模块为例做一个分页功能. 我们在做之前首先分析一下我们分页的规则: 总共1条记录,当前第 1 页,共 1 页    上一页  下一页 到   属性有: 总记录数 当前页号 总页数 页大小 列表记录 使用例子: 共6条记录,每页3条,共2页 总页数 = 总记录数/页大小 共7条记录,每页3条,共3

【SSH项目实战】国税协同平台-27.分页对象应用&amp;amp;抽取pageNavigator

上次我们完成了信息发布管理模块的分页功能.但是我们还没给其它的模块做分页,所以我们也要去完成其它模块的分页功能. 按照我们给信息发布管理模块编写分页功能的方式去编写,需要大费周章,我们不如把分页功能封装起来,这样这些模块包括以后扩充的模块都能使用分页的功能了. 我们回顾一下我们的InfoAction,关于分页的属性有: //分页对象 protected PageResult pageResult; //页号 private int pageNo; //页大小 private int pageSi

【SSH项目实战】国税协同平台-30.投诉受理&amp;amp;保存受理信息

上次我们给"投诉受理管理"模块做了多条件查询功能,我们通过流程图来回顾一下这个模块的具体流程: 根据流程图,我们接下来剩下的就是"受理投诉"."保存投诉信息"."用户投诉"等功能了.我们不用着急,一项一项的来完成. 我们下面写的就是管理者受理投诉的功能,可以看到我们的列表有这么一项: 我们要给这个受理加一个链接,使之能够进入之前需求分析中要求的受理界面,在受理界面管理者可以填写投诉的回复内容. 首先在Action中编写跳转至受