Java如何接收前端easyui?datagrid傳遞的數(shù)組參數(shù)
這篇文章分享一下怎么在easyui的datagrid刷新表格時,在后端java代碼中接收datagrid傳遞的數(shù)組參數(shù)。
數(shù)組來源于技能的tagbox(標(biāo)簽框),tagbox和combobox的區(qū)別是tagbox可以選擇多項。

標(biāo)簽框渲染的代碼為
$("#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 + "' /> " + 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
});
});但是傳遞參數(shù)的時候,發(fā)現(xiàn)參數(shù)的格式和我們想要的不太一樣

參數(shù)名居然帶了一個數(shù)組的[],很顯然這不是我們想要的結(jié)果。
改進后的代碼
$("#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)
});
});此時參數(shù)格式是正確的,把數(shù)組轉(zhuǎn)成了json格式的字符串。

然后在后端java通過List<Integer> skillIds參數(shù)接收,點擊搜索按鈕居然報錯了,不能把String轉(zhuǎn)為List<Integer>

這時候就要借助spring的轉(zhuǎn)換器來完成類型轉(zhuǎn)換了,創(chuàng)建一個Converter的實現(xiàn)類,并聲明為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<FilterRule>的轉(zhuǎn)換器
* @author heyunlin
* @version 1.0
*/
@Component
public class StringToListOfIntegerConverter implements Converter<String, List<Integer>> {
@Override
public List<Integer> convert(String source) {
return JSON.parseArray(source, Integer.class);
}
}重啟項目,重新查詢一次,這一次成功了,查詢到符合條件的唯一一條數(shù)據(jù)。

上面已經(jīng)提供了完美的解決方案,當(dāng)然,方案不唯一,可以把數(shù)組所有元素通過一個字符連接起來,然后在后端通過相同的字符分割,也能得到想要的數(shù)組。(博主一開始也是這么實現(xiàn)的)
到此這篇關(guān)于java接收前端easyui datagrid傳遞的數(shù)組參數(shù)的文章就介紹到這了,更多相關(guān)java easyui datagrid傳遞的數(shù)組參數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Intellij IDEA導(dǎo)入eclipse web項目的操作步驟詳解
Eclipse當(dāng)中的web項目都會有這兩個文件,但是idea當(dāng)中應(yīng)該是沒有的,所以導(dǎo)入會出現(xiàn)兼容問題,但是本篇文章會教大家如何導(dǎo)入,并且導(dǎo)入過后還能使用tomcat運行,需要的朋友可以參考下2023-08-08
java中用float時,數(shù)字后面加f,這樣是為什么你知道嗎
這篇文章主要介紹了java用float時,數(shù)字后面加f,這樣是為什么你知道嗎?具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09
SpringBoot數(shù)據(jù)校驗及多環(huán)境配置的問題詳解
這篇文章主要介紹了SpringBoot數(shù)據(jù)校驗及多環(huán)境配置,本文以SpringBoot-02-Config 項目為例,給大家詳細介紹,需要的朋友可以參考下2021-09-09

