Java如何接收前端easyui?datagrid傳遞的數(shù)組參數(shù)
這篇文章分享一下怎么在easyui的datagrid刷新表格時,在后端java代碼中接收datagrid傳遞的數(shù)組參數(shù)。
數(shù)組來源于技能的tagbox(標簽框),tagbox和combobox的區(qū)別是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 + "' /> " + 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)提供了完美的解決方案,當然,方案不唯一,可以把數(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導入eclipse web項目的操作步驟詳解
Eclipse當中的web項目都會有這兩個文件,但是idea當中應(yīng)該是沒有的,所以導入會出現(xiàn)兼容問題,但是本篇文章會教大家如何導入,并且導入過后還能使用tomcat運行,需要的朋友可以參考下2023-08-08java中用float時,數(shù)字后面加f,這樣是為什么你知道嗎
這篇文章主要介紹了java用float時,數(shù)字后面加f,這樣是為什么你知道嗎?具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09SpringBoot數(shù)據(jù)校驗及多環(huán)境配置的問題詳解
這篇文章主要介紹了SpringBoot數(shù)據(jù)校驗及多環(huán)境配置,本文以SpringBoot-02-Config 項目為例,給大家詳細介紹,需要的朋友可以參考下2021-09-09