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

2023-11-03 01:18

本文主要是介绍【SSH项目实战】国税协同平台-25.查询条件回显,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


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

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

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

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

我们在info的struts配置文件中的list重定向配置中添加一个参数“info.title”:
[html]  view plain copy
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE struts PUBLIC  
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.3.dtd">  
  5.   
  6.   
  7. <struts>  
  8.     <package name="info-action" namespace="/tax" extends="base-default">  
  9.         <action name="info_*" class="cn.edu.hpu.tax.info.action.InfoAction" method="{1}">  
  10.             <result name="{1}">/WEB-INF/jsp/tax/info/{1}.jsp</result>  
  11.             <result name="list" type="redirectAction">  
  12.                 <param name="actionName">info_listUI</param>  
  13.                 <param name="info.title">${info.title}</param>            
  14.                                 <param name="encode">true</param><!-- 需要编码 -->  
  15.             </result>  
  16.         </action>  
  17.     </package>  
  18. </struts>  

然后在接收info.title的时候我们进行解码:
[java]  view plain copy
  1. info.setTitle(URLDecoder.decode(info.getTitle(),"utf-8"));  

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

测试:
搜索“1”:


结果:


编辑一个


点击“返回”后结果:

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

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


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



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


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

我们解决这个问题。
既然我们的info.title会因为增删改而改变,那么我们就把之前的info.title保存在一个临时变量里,不管之后info.title或者info再发任何改变,我们之前搜索使用的info.title值都不会再丢失或覆盖:
这里我们在InfoAction中把这个临时变量设为:
[java]  view plain copy
  1. private String strTitle;  
  2.   
  3. public String getStrTitle() {  
  4.     return strTitle;  
  5. }  
  6. public void setStrTitle(String strTitle) {  
  7.     this.strTitle = strTitle;  
  8. }  

然后在InfoAction中的新增页面跳转方法addUI、编辑页面跳转方法editUI、删除方法delete以及异步信息发布publicInfo方法中添加此代码(创建或更新、取得info前):
[java]  view plain copy
  1. //解决查询条件覆盖的问题  
  2. strTitle=info.getTitle();  

然后我们在“编辑”“新增”的填写数据的页面把strTitle值当做隐藏数据放置在jsp页面中,当点击“修改”和“保存”的时候会随之一传至列表界面,就可以带着原来的查询条件回显了。
[html]  view plain copy
  1. <s:hidden name="strTitle"/>  

然后修改我们的struts的配置文件,将info.title的引用值改为strTitle:
[html]  view plain copy
  1. <result name="list" type="redirectAction">  
  2.     <param name="actionName">info_listUI</param>  
  3.     <param name="info.title">${strTitle}</param>  
  4.     <param name="encode">true</param><!-- 需要编码 -->  
  5. </result>  

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


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

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



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

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


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

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


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

我们的页面也需要回显,不能因为编辑完回退到第一页而不是刚刚点编辑的那一页,究其原因是我们没有将当前页码pageNo参数传递过去,所以我们在每一个编辑页面都将pageNo作为隐式参数包含进去:
[html]  view plain copy
  1. <s:hidden name="pageNo"/>  

在进行list重定向的时候我们也把pageNo给包含进去,这里在info-struts.xml中去配置(就是下面的<param name="pageNo">${pageNo}</param>这一句):
[html]  view plain copy
  1. <result name="list" type="redirectAction">  
  2.     <param name="actionName">info_listUI</param>  
  3.     <param name="info.title">${strTitle}</param>  
  4.         <param name="pageNo">${pageNo}</param>  
  5.     <param name="encode">true</param><!-- 需要编码 -->  
  6. </result>  

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

这篇关于【SSH项目实战】国税协同平台-25.查询条件回显的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/334562

相关文章

SQL表间关联查询实例详解

《SQL表间关联查询实例详解》本文主要讲解SQL语句中常用的表间关联查询方式,包括:左连接(leftjoin)、右连接(rightjoin)、全连接(fulljoin)、内连接(innerjoin)、... 目录简介样例准备左外连接右外连接全外连接内连接交叉连接自然连接简介本文主要讲解SQL语句中常用的表

深入理解Apache Kafka(分布式流处理平台)

《深入理解ApacheKafka(分布式流处理平台)》ApacheKafka作为现代分布式系统中的核心中间件,为构建高吞吐量、低延迟的数据管道提供了强大支持,本文将深入探讨Kafka的核心概念、架构... 目录引言一、Apache Kafka概述1.1 什么是Kafka?1.2 Kafka的核心概念二、Ka

springboot项目中常用的工具类和api详解

《springboot项目中常用的工具类和api详解》在SpringBoot项目中,开发者通常会依赖一些工具类和API来简化开发、提高效率,以下是一些常用的工具类及其典型应用场景,涵盖Spring原生... 目录1. Spring Framework 自带工具类(1) StringUtils(2) Coll

SpringBoot条件注解核心作用与使用场景详解

《SpringBoot条件注解核心作用与使用场景详解》SpringBoot的条件注解为开发者提供了强大的动态配置能力,理解其原理和适用场景是构建灵活、可扩展应用的关键,本文将系统梳理所有常用的条件注... 目录引言一、条件注解的核心机制二、SpringBoot内置条件注解详解1、@ConditionalOn

MySQL高级查询之JOIN、子查询、窗口函数实际案例

《MySQL高级查询之JOIN、子查询、窗口函数实际案例》:本文主要介绍MySQL高级查询之JOIN、子查询、窗口函数实际案例的相关资料,JOIN用于多表关联查询,子查询用于数据筛选和过滤,窗口函... 目录前言1. JOIN(连接查询)1.1 内连接(INNER JOIN)1.2 左连接(LEFT JOI

MySQL 中查询 VARCHAR 类型 JSON 数据的问题记录

《MySQL中查询VARCHAR类型JSON数据的问题记录》在数据库设计中,有时我们会将JSON数据存储在VARCHAR或TEXT类型字段中,本文将详细介绍如何在MySQL中有效查询存储为V... 目录一、问题背景二、mysql jsON 函数2.1 常用 JSON 函数三、查询示例3.1 基本查询3.2

MySQL中的交叉连接、自然连接和内连接查询详解

《MySQL中的交叉连接、自然连接和内连接查询详解》:本文主要介绍MySQL中的交叉连接、自然连接和内连接查询,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、引入二、交php叉连接(cross join)三、自然连接(naturalandroid join)四

mysql的基础语句和外键查询及其语句详解(推荐)

《mysql的基础语句和外键查询及其语句详解(推荐)》:本文主要介绍mysql的基础语句和外键查询及其语句详解(推荐),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录一、mysql 基础语句1. 数据库操作 创建数据库2. 表操作 创建表3. CRUD 操作二、外键

Spring Boot项目部署命令java -jar的各种参数及作用详解

《SpringBoot项目部署命令java-jar的各种参数及作用详解》:本文主要介绍SpringBoot项目部署命令java-jar的各种参数及作用的相关资料,包括设置内存大小、垃圾回收... 目录前言一、基础命令结构二、常见的 Java 命令参数1. 设置内存大小2. 配置垃圾回收器3. 配置线程栈大小

在Android平台上实现消息推送功能

《在Android平台上实现消息推送功能》随着移动互联网应用的飞速发展,消息推送已成为移动应用中不可或缺的功能,在Android平台上,实现消息推送涉及到服务端的消息发送、客户端的消息接收、通知渠道(... 目录一、项目概述二、相关知识介绍2.1 消息推送的基本原理2.2 Firebase Cloud Me