当前位置: 首页 > news >正文

java接收前端easyui datagrid传递的数组参数

这篇文章分享一下怎么在easyui的datagrid刷新表格时,在后端java代码中接收datagrid传递的数组参数。

数组来源于技能的tagbox(标签框),tagbox和combobox的区别是tagbox可以选择多项。

标签框渲染的代码为

    $("#skill_ids").tagbox({url: "/chongwu_skill_category/selectAll",valueField: "id",textField: "name",width: 300,hasDownArrow: true,groupField: "type",panelHeight: "auto",prompt: "--请选择技能--",groupFormatter: function(group){return "<span class='red'>" + skillTypes[group] + "</span>";},formatter: function(row) {return "<img width='18' src='" + row.image + "' />&nbsp;" + row.name;}});

然后页面上方的搜索按钮绑定刷新表格事件,会获取3个下拉框的值并传到后端。

    $("#search").linkbutton({iconCls: "icon-search"}).click(function() {let categoryId = $("#category_id").combobox("getValue");let roleId = $("#role_id").combobox("getValue");let skillIds = $("#skill_ids").tagbox("getValues");$("#chongwu_list").datagrid("load", {roleId: roleId,skillIds: skillIds,categoryId: categoryId});});

但是传递参数的时候,发现参数的格式和我们想要的不太一样

参数名居然带了一个数组的[],很显然这不是我们想要的结果。

改进后的代码

    $("#search").linkbutton({iconCls: "icon-search"}).click(function() {let categoryId = $("#category_id").combobox("getValue");let roleId = $("#role_id").combobox("getValue");let skillIds = $("#skill_ids").tagbox("getValues");$("#chongwu_list").datagrid("load", {roleId: roleId,categoryId: categoryId,skillIds: JSON.stringify(skillIds)});});

此时参数格式是正确的,把数组转成了json格式的字符串。

然后在后端java通过List<Integer> skillIds参数接收,点击搜索按钮居然报错了,不能把String转为List<Integer>

这时候就要借助spring的转换器来完成类型转换了,创建一个Converter的实现类,并声明为Spring组件。

package cn.edu.sgu.www.mhxysy.converter;import com.alibaba.fastjson.JSON;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;import java.util.List;/*** String ==> List<Integer>的转换器* @author heyunlin* @version 1.0*/
@Component
public class StringToListOfIntegerConverter implements Converter<String, List<Integer>> {@Overridepublic List<Integer> convert(String source) {return JSON.parseArray(source, Integer.class);}}

重启项目,重新查询一次,这一次成功了,查询到符合条件的唯一一条数据。

上面已经提供了完美的解决方案,当然,方案不唯一,可以把数组所有元素通过一个字符连接起来,然后在后端通过相同的字符分割,也能得到想要的数组。(博主一开始也是这么实现的)

相关文章:

  • Redis(集合Set和有序集合SortedSet)
  • 多svn仓库一键更新脚本分享
  • 电机开源驱动器基本操作与实现
  • Zookeeper的六个要点问题
  • Java获取Jar、War包路径,并生成可编辑修改的本地配置文件
  • levelDB之基础数据结构-Slice
  • 使用 React Flow 构建一个思维导图应用
  • 【2022改良版】学法减分助手PRO小程序源码
  • 深度学习(五)softmax 回归之:分类算法介绍,如何加载 Fashion-MINIST 数据集
  • 内网穿透 cpolar
  • mysql查询json字符串内容
  • 基于java web的中小型人力资源管理系统
  • LuatOS-SOC接口文档(air780E)--nimble - 蓝牙BLE库(nimble版)
  • 【SpringBoot篇】分页查询 | 扩展SpringMvc的消息转换器
  • 「引流工具」火炬多平台多功能引流高效推广脚本,抖音+快手+小红书多平台自动引流软件
  • JS 中的深拷贝与浅拷贝
  • 【知识碎片】第三方登录弹窗效果
  • 11111111
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • extjs4学习之配置
  • Laravel5.4 Queues队列学习
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 关于extract.autodesk.io的一些说明
  • 实现简单的正则表达式引擎
  • 使用 QuickBI 搭建酷炫可视化分析
  • 关于Android全面屏虚拟导航栏的适配总结
  • 移动端高清、多屏适配方案
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ​批处理文件中的errorlevel用法
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (3)STL算法之搜索
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (三)Honghu Cloud云架构一定时调度平台
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • (转载)(官方)UE4--图像编程----着色器开发
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .NET Core 中的路径问题
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖
  • .NET中使用Protobuffer 实现序列化和反序列化
  • [Android Pro] android 混淆文件project.properties和proguard-project.txt
  • [ccc3.0][数字钥匙] UWB配置和使用(二)
  • [CISCN2019 华北赛区 Day1 Web2]ikun
  • [ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-controller-manager失败
  • [fsevents@^2.1.2] optional install error: Package require os(darwin) not compatible with your platfo
  • [iOS]中字体样式设置 API
  • [Java][方法引用]构造方法的引用事例分析
  • [Java性能剖析]Sun JDK基本性能剖析工具介绍