jsp下拉框级联查询以及java代码实现

2023-10-28

需求描述:

  • 我们在开发过程中,很多页面查询,新增修改页面的下拉,需要通过一个下拉框的值,确定另一个下拉的值,典型的就是,选择年级,另一个下拉需要展示对应的班级,选择了班级,需要展示对应的学生。
  • 下面是存放地方,建筑物,级联查询建筑物与房间的例子,效果如下

在这里插入图片描述

  • 前台部分使用jsp做页面,fmt,cus都是jsp的标签,如果是使用jsp做开发,可以直接复用代码,如果使用html页面,则需要定义一个div容器,作为js循环查询到的值。

    key对应的是输入框的标题,itemList是后台查询的值,将值填充到下拉框

  <div class="searchbody">
	<dl>
		<fmt:message key="oaEquipment.new.storage"/>:<cus:SearchFilterTag name="orgcode" id="orgcode" op="eq" type="string" itemList="${schList}" onChange="doSubNew()" defaultText="全部校区" style="width:250px"/>
		<cus:SearchFilterTag name="propertyBuilding.id" id="propertyBuildingId" op="eq" type="long" itemList="${buildingList}" onChange="doSubNew()" defaultText="全部建筑"/>
		<cus:SearchFilterTag name="propertyBuildingFloor.id" id="propertyBuildingFloorId" op="eq" type="long" itemList="${roomList}" onChange="doSubNew()" defaultText="全部房间"/>
	</dl>
  </div>

重写onChange方法,通过获取id过滤级联操作,doSub()是默认的表单提交方法

 <script type="text/javascript">
    	//操作过滤条件并提交
   		function doSubNew(){
			if($("#orgcode").val() == ''){
				$("#propertyBuildingId").val("");
			}
			if($("#propertyBuildingId").val() == ''){
				$("#propertyBuildingFloorId").val("");
			}
			doSub();
		}
	</script>

java后台代码的查询方法,EntityFilter的作用类似session,可以从ef中取到jsp页面中对应的值

public String doSelect(Model model) throws Exception{
		ZhxyUser user = (ZhxyUser) getUser();
		String[] orgCodes = user.getAttrMap().get("relatedOrgCodes").toString().split(",");
		
		EntityFilter ef = getEntityFilter();
		String teacherName = null;
		String orgcode = null;
		Long propertyBuilding = null;
		//当存在学校编码时,获取值
		if(ef.isFilterExist("orgcode"))
		{
			orgcode = String.valueOf(ef.getFilterValue("orgcode"));
		}
		//当存在建筑id时,获取值
		if(ef.isFilterExist("propertyBuilding.id"))
		{
			propertyBuilding = Long.valueOf(String.valueOf(ef.getFilterValue("propertyBuilding.id")));
		}
		if(ef.isFilterExist("teacherName"))
		{
			teacherName = String.valueOf(ef.getFilterValue("teacherName"));
		}

		//根据传入条件查询存储位置的下拉集合
		List<SelectItem> schList = new ArrayList<SelectItem>();
		List<SelectItem> buildingList = new ArrayList<SelectItem>();
		List<SelectItem> roomList = new ArrayList<SelectItem>();
		schList = organizationOutService.doGetRelatedOrgSelectItemsByIdenId(user.getIdentityId(),
			PlatformAllCodeKey.ORGANIZATION_TYPE_SCH);
		if(!StringUtils.isNullString(orgcode))
		{
			buildingList = propertyBuildingService.getBuildingIdSelectItemsByOrgCode(orgcode);
		}
		if(propertyBuilding != null)
		{
			roomList = propertyBuildingFloorService.getRoomIdSelectItemsByBuildingId(propertyBuilding);
		}

		//根据过滤条件,获取OaEquipmentDomain集合
		ef.addFilter("orgcode", Op.IN, orgCodes);
		addOrder("createTime","DESC");
		List<OaEquipmentDomain> resultList = oaEquipmentService.doGetPagedList(getPagedInfo());
		copyPageListInfo(resultList);

		model.addAttribute("schList", schList);
		model.addAttribute("buildingList", buildingList);
		model.addAttribute("roomList", roomList);
		model.addAttribute("resultList", resultList);
		model.addAttribute("teacherName", teacherName);
		return "oa/oaEquipment/oaEquipmentList";
	}

service层通过前台传的code的值查询建筑物的列表

 // 根据学校code获取建筑物下拉集合
    public List<SelectItem> getBuildingIdSelectItemsByOrgCode(String orgCode) throws ApplicationException, SystemException {
        List<SelectItem> items = new ArrayList<SelectItem>();
        if (StringUtils.isNullString(orgCode)) {
            return items;
        }
        //根据过滤条件获取 建筑物对象列表
        EntityFilter ef = createNewEntityFilter();
        ef.addFilter("dataOrgcode", orgCode);
        List<PropertyBuilding> propertyBuildings = propertyBuildingDao.getFilterList(ef);
        //将 建筑物对象列表 封装成 建筑物下拉集合
        for (PropertyBuilding propertyBuilding : propertyBuildings) {
            SelectItem item = new SelectItem();
            item.setSelectValue(String.valueOf(propertyBuilding.getId()));
            item.setSelectText(propertyBuilding.getBuildingName());
            items.add(item);
        }
        return items;
    }
  • 这种做法才用的是表单提交的方式,进行查询关联的下拉

  • 点击第一个下拉框的值,onchange事件携带参数进行提交,后来取到值以后,查询对应的下拉的值,然后重新进入页面,页面显示的时候,将查询的值显示出来,同时,会显示前一个下拉选中的值。
  • 还有一种做法是ajax提交的方式,这种方式需要将获取到值,用js的方式,写入下拉,大家可以根据自己得实际情况来。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jsp下拉框级联查询以及java代码实现 的相关文章

  • 在Java中将*s打印为三角形?

    我在 Java 课程中的作业是制作 3 个三角形 一份左对齐 一份右对齐 一份居中 我必须为什么类型的三角形制作一个菜单 然后输入需要多少行 三角形必须看起来像这样 到目前为止 我能够完成左对齐的三角形 但我似乎无法获得其他两个 我尝试用谷
  • 如何将 JSpinner 的值设置为特定日期

    我有一个JSpinner我添加到JPanel我想将其时间设置为 GregorianCalendar calendar JSpinner spinner new JSpinner spinner setModel model pom add
  • GET 请求的 Spring 注解

    这两种spring GET方法有什么区别呢 哪一种是首选方法 Component Scope request Path public class TestComponent GET Path hello public String prin
  • 在命令行java中突出显示文本[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一项任务是重新创建 unix cal 程序 除了一部分之外 相当简单 今天 它突出显示了该数字 我不知道该怎么做 关于如何在 Ja
  • Java:线程“主”中的异常 java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:

    我是初学者 谁能帮我弄清楚我们在做什么 我正在尝试读取字符串并将字符串的每个字符存储在数组中 import java util Scanner public class CoreMainDigitExtractor static Scann
  • 尝试获取屏幕上绘制的每个随机圆圈的 x、y 坐标

    您好 我正在制作一款游戏 该游戏将在屏幕上创建随机圆圈 随机创建的圆圈的值为红色或绿色 我的问题是 我希望不仅能够确定用户何时单击其中一个圆圈 而且还能够确定他们最终单击的圆圈 红色或绿色 下面是我的代码 我的主要问题是试图找到将要绘制的圆
  • 如何为小程序提供对文件系统写入的访问权限

    我在设置小程序的策略文件时遇到问题 我是第一次这样做 不知道如何在java中设置小程序的策略文件 实际上我想授予小程序在文件系统上写入的权限 为此我必须向小程序授予文件权限 所以我创建了一个名为 java policy 的文件 并将以下代码
  • Java - JPanel 内有边距和 JTextArea

    我想创建这样的东西 主面板有其边距 x 并且 TextArea 位于该面板的中心 几乎填满了面板 底部是另一个具有自定义尺寸 高度 y 的面板 可以使用某些快捷方式将其切换为可见和不可见 底部面板有 FlowLayout 和几个元素 问题是
  • Java 中的 ExecuteUpdate sql 语句不起作用

    我正在学习如何将 SQL 与 Java 结合使用 我已成功安装 JDBC 驱动程序 并且能够从数据库读取记录并将其打印在屏幕上 我的问题发生在尝试执行更新或插入语句时 没有任何反应 这是我的代码 问题所在的方法 public static
  • 从 HttpClient 3 转换为 4

    我已经成功地对所有内容进行了更改 但以下内容除外 HttpClient client HttpPost method client new DefaultHttpClient method new HttpPost url InputStr
  • 查找数组中的组合

    我在java中有一个像这样的二维数组 transmission communication tv television approach memorycode methodact 我需要获得所有组合 例如 transmission appr
  • 更改 JComboBox 中滚动条的大小

    有谁知道如何手动更改 jComboBox 中的滚动条大小 我已经尝试了一大堆东西 但没有任何效果 好吧 我明白了 您可以实现 PopUpMenuListener 并使用它 public void popupMenuWillBecomeVis
  • 从 Android 访问云存储

    我一直无法找到任何有关如何从 Android 应用程序使用云存储的具体文档 我确实遇到过这个客户端库 https cloud google com storage docs reference libraries然而 Google Clou
  • 如何检查日期字符串的有效性?

    在我的项目中 我需要检查日期字符串是否计算为正确的日期对象 我决定允许 yyyy MM dd 和日期格式 年 月 日 和 年 月 日 小时 分钟 我如何检查它们是否有效 我的代码为 1980 01 01 和一些奇怪的日期 如 3837 05
  • 在循环中按名称访问变量

    我正在开发一个 Android 项目 并且有很多可绘制对象 这些绘图的名称都类似于icon 0 png icon 1 png icon 100 png 我想将这些可绘制对象的所有资源 ID 添加到整数 ArrayList 中 对于那些不了解
  • 如何将库添加到 LIBGDX 项目的依赖项 gradle

    一切都在问题中 我已经尝试了在 SO 和其他网站中找到的所有答案 但没有运气 这就是我迄今为止尝试过的 adding compile fileTree dir lib include jar 到我的 build gradle adding
  • java中的预增量/后增量

    有人可以帮助我理解为什么 int i 1 int j 1 int k 1 int l 1 System out println i i System out println j j System out println k k System
  • java.lang.ClassCastException:com.sun.proxy.$Proxy8 无法转换为 org.openqa.selenium.internal.WrapsDriver

    我有以下切入点和 AspectJ 中给出的建议 Pointcut call org openqa selenium WebElement sendKeys public void onWebElementAction After onWeb
  • 你能快速告诉我这个伪代码是否有意义吗?

    我相信我的代码现在是万无一失的 我现在将写出伪代码 但我确实有一个问题 为什么 DRJava 要求我返回 if 语句之外的内容 正如你所看到的 我为 ex 写了 return 1 只是因为它问了 但是它永远不会返回该值 谁可以给我解释一下这
  • 将数组值导出到 csv 文件 java

    我只需要帮助将数组元素导出到 csv 文件 我不知道我的代码有什么问题 任何帮助将不胜感激 谢谢 for int index 0 index lt cols length index FileWriter fw new FileWriter

随机推荐

  • centos7 安装Python3.9

    1 安装编译相关软件 su yum y groupinstall Development tools yum y install zlib devel bzip2 devel openssl devel ncurses devel sqli
  • 让ChatGPT介绍一下ChatGPT

    申请新必应内测通过了 我在New Bing中使用下ChatGPT 让ChatGPT介绍一下ChatGPT 问题1 帮我生成一篇介绍chatGPT的文章 不少于2000字 回答 chatGPT是什么 它有什么特点和用途 chatGPT是一种人
  • spring boot + mybatis puls + thymeleaf ,thymeleaf获取list中的map对象报错FTL stack trace ("~" means nesting

    求给位大佬帮忙解决下 我用的项目的是 spring boot mybatis puls thymeleaf 情况是这样的 我后台获取List
  • 函数连续,函数可微,函数可导,偏导数存在,偏导数连续之间的关系

    1 可导 即设y f x 是一个单变量函数 如果y在x x0处存在导数y f x 则称y在x x 0 处可导 如果一个函数在x0处可导 那么它一定在x0处是连续函数 函数可导定义 1 设f x 在x0及其附近有定义 则当a趋向于0时 若 f
  • 某盾js逆向_data参数详解_python代码还原

    注 本篇博客仅供学习使用 请勿用作其他商业用途 如有侵权 请联系本菜鸟 前面几篇文章介绍了cb fp actoken参数的获取办法 下面介绍check请求中data参数的生成方式 1 搜索data 打上断点 m参数的值和前面cb参数的值运算
  • 顺序查找与二分查找时间复杂度的比较

    注意要点 通过System currentTimeMills 来获取当前时间 来计算该算法运行运算时间 顺序查找的时间复杂度为O n 二分查找的时间复杂度为O log n 但两者的运行时间的结果却千差万别 可知当计算量很大的情况下算法优化的
  • Java中的volatile

    文章目录 1 volatile的内存语义 2 内存屏障 2 happens before 之 volatile 变量规则 4 Demo 1 volatile的内存语义 内存可见性 volatile是Java提供的一种轻量级的同步机制 在并发
  • windows11 elasticsearch-head 插件安装

    1 elasticsearch head 插件介绍 elasticSearch head就是一款能连接ElasticSearch搜索引擎 并提供可视化的操作页面对elasticSearch搜索引擎进行各种设置和数据检索功能的管理插件 如在h
  • 十个C语言项目,从小白到月入10K

    每年的就业季都有很多同学惆怅 在校期间没有项目经历 简历一片空白 不知道该怎么写 所以今天为大家盘点了十个C C 项目 由浅入深 可以作为就业或者考研复试的在校项目经历 也可以用作毕业设计 直奔主题 一 通讯管理系统 难度系数 代码量 40
  • 2023华为od机试Java B卷【最长回文串】

    题目 回文串的定义时 某个字符串正读和反读结果完全一样 以下例子就是回文串 1 leVel符合回文串的定义 因为它的正读和反读都是leVel 同理a也是 回文串 2 art不符合回文串的定义 因为它的反读tra与正读不同 现在给你若干个字母
  • listview中listitem点击实现沿曲线移动动画效果

    现在有这样一个需求 点击listview中的任意一个item 出现一个轨迹为曲线的动画 我们知道Android动画分为帧动画 Frame 和补间动画 Tween 两种 帧动画和gif类似 将不同的帧以一定速度连续播放产生动画 需要我们事先准
  • 车牌识别中的不分割字符的端到端(End-to-End)识别

    传统的车牌识别过程是往往是这样的 车牌定位 gt 车牌判断 gt 车牌字符的分割 gt 车牌字符的识别 这种方法有个好处就是 仅仅需要较少的字符样本即可用于分类器的训练 在光照 相机条件好的情况下也能取得较好的效果 现在大多数商业车牌识别软
  • OKEX行情接口对接实例

    系统说明 开发语言 net core mssql2019 采用socket 订阅官方接收行情数据 可接收 市场 深度 行情 交易等数据
  • 炫酷的倒计时效果,祝福春节

    前言 春节将至 小福利 炫酷的倒计时效果 效果图 实现源码
  • JVM系列(七) JVM 垃圾收集器

    我们知道JVM会回收垃圾 但是每种垃圾收集器的收集机制和收集的方法都不一样 今天我们讨论下几种垃圾回收机制 1 按照垃圾区域划分垃圾收集器 我们可以按照垃圾存在的区域来划分垃圾收集器 垃圾在堆内的区域分为 新生代垃圾 老年代垃圾 新生代老年
  • aligned_alloc

    aligned alloc 函数 C C 函数签名 void aligned alloc size t alignment size t size 函数定义在
  • java代码实现下拉列表框多选操作

    实现操作 实现如图所示功能 前端没有学习 故本文只写后端内容 一 数据库 CREATE TABLE axa risk quantification id bigint 20 NOT NULL AUTO INCREMENT assets va
  • VSCode Remote-SSH (Windows)

    1 VSCode 安装 VSCode 2 安装扩展 Remote SSH Getting started Follow the step by step tutorial or if you have a simple SSH host s
  • Canny边缘检测算法原理及其VC实现详解(一)

    目录 1 边缘检测原理及步骤 2 Canny边缘检测算法原理 2 1 对原始图像进行灰度化 2 2 对图像进行高斯滤波 2 3 用一阶偏导的有限差分来计算梯度的幅值和方向 2 4 对梯度幅值进行非极大值抑制 2 5 用双阈值算法检测和连接边
  • jsp下拉框级联查询以及java代码实现

    需求描述 我们在开发过程中 很多页面查询 新增修改页面的下拉 需要通过一个下拉框的值 确定另一个下拉的值 典型的就是 选择年级 另一个下拉需要展示对应的班级 选择了班级 需要展示对应的学生 下面是存放地方 建筑物 级联查询建筑物与房间的例子