web中拖拽排序和java后臺交互實現(xiàn)方法示例
一、業(yè)務需求
1,在后臺的管理界面通過排序功能直接進入排序界面
2,在排序界面能夠人工的手動拖動需要排序的標題,完成對應的排序之后提交
3,在app或者是前端就有對應的排序?qū)崿F(xiàn)了
本文將詳細介紹web拖拽排序和java后臺交互的相關(guān)內(nèi)容,下面話不多說了,來一起看看詳細的介紹吧
二、頁面展示
將整體頁面效果展示出來之后如圖所示(頁面點擊確定之后的效果是與java后臺進行交互的):
三、設(shè)計思路:
后臺:如果需要將排序的結(jié)果保存到數(shù)據(jù)庫,那么必須要修改數(shù)據(jù)庫中對應的起碼一個字段(排序的序號sort),那么后臺需要至少接收的參數(shù)有sort和id兩個字段。我這邊采用的是將這兩個字段封裝到對象,并且采用集合的方式傳遞給后臺,因為對應的修改必須是針對數(shù)據(jù)庫中需要排序的所有數(shù)據(jù)的操作。當然可以根據(jù)不同的業(yè)務實施不同的排序方式
前端:a,實現(xiàn)拖拽功能;b,需要能夠提供實時的序列號sort和該序列號指定的id
四、前端設(shè)計:
1,下載插件:只需點擊超鏈接,下載drag.zip并解壓,就會自動轉(zhuǎn)為drag.js文件,引用即可
2,代碼實現(xiàn):
A>頁面中代碼:
<!--起始的頁面--> <div class="listMain"> <div class="addData"> <ul class="dataList" id="dataList${var.ID }"> <c:forEach items="${varList }" var="movieParam" varStatus="varSatus"> <li class="dataList_Child"> <input type="hidden" class="idSort" value="${movieParam.id }" /> <!--id值--> <p class="datali_name">${movieParam.NAME }</p> <!--頁面中的9999,888,555,333的值--> <input type="hidden" class="seqSort" /> <!--存放sort序號值的地方--> </li> </c:forEach> </ul> <input type="button" name="" value="新 增" class="Add_listButton" onclick="addList()"> <input type="button" name="" value="排 序" class="M_sort" onclick="getSortList()" > </div> </div>
<!--排序頁面--> <div class="M_sortMain"> <form action="movieparam/editSort.do" method="post"> <div class="M_sortMain_wrap"> <span class="close_M_sortMain"></span> <div class="sortOul"> <ul class="sortOulMain"></ul> </div> </div> <input type="submit" value="提交" class="sort_submit"> </form> </div>
B>點擊排序的時候觸發(fā)事件(需要能獲取到當前的序號和id值):
//點擊排序:1,將當前頁面裝到指定的div;2,給對應的兩個隱藏的input框添加name屬性,便于后臺接收;3,為sort的隱藏的input賦予sort序號值 function getSortList(){ $(".M_sortMain").css("display","block"); //遮罩頁面顯示 $(".sortOulMain").html($(".listMain").html()); //將當前頁面裝到指定的div $("li").each(function(){ var seq_attr = 'movieParams['+$(this).index()+'].sort'; var id_attr = 'movieParams['+$(this).index()+'].id'; $(this).children(".seqSort").attr('name',seq_attr); //為序號框添加name屬性 $(this).children(".seqSort").val($(this).index()) //為sort的隱藏的input賦予sort序號值 $(this).children(".idSort").attr('name',id_attr); //為id框添加name屬性 }) }
C>拖拽效果的實現(xiàn),引用了提供的drag.js
// 排序事件中的拖拽事件 $('.sortOulMain').DDSort({ target: 'li', floatStyle: { 'border': '1px solid #ccc', 'background-color': '#fff', 'cursor': 'move' }, //每次拖拽完成之后都會執(zhí)行的函數(shù) up: function () { $("li").each(function(){ $(this).children(".seqSort").val($(this).index()); //改變?nèi)碌膕ort隱藏的input的序號值 }) } });
五、后臺設(shè)計:
后臺采用的就是比較傳統(tǒng)的SSM框架了,主要就是對接收的參數(shù)的處理:
A>SpringMVC中只需要注意對于參數(shù)的接收必須按照指定的name對應即可(這里list集合中參數(shù)的封裝就不再強調(diào)了):
@RequestMapping("editSeq") public ModelAndView editSeq(MovieParamListForm movieParamList)throws Exception{ //判空操作這里省略了 movieParamService.editSeq(movieParamList.getMovieParams()); }
B>Service層的處理省略了,主要是對movieParam中的id和sort兩個字段的操作,直接跳到Mybatis:
<update id="editSeq" parameterType="java.util.List"> <foreach collection="list" item="var" index="index" open="" close="" separator=";"> update t_params <set> sort= #{var.sort} </set> where id= #{var.id} </foreach> </update>
C>如果這時候發(fā)現(xiàn)自己的SQL寫的沒有問題但是在執(zhí)行的時候控制臺還是報錯了的話,那么必須要在連接數(shù)據(jù)庫的時候加上這樣一段代碼就行了:allowMultiQueries=true 這個是在操作數(shù)據(jù)庫批量修改時數(shù)據(jù)庫的一個問題
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
IDEA版使用Java操作Redis數(shù)據(jù)庫的方法
這篇文章主要介紹了IDEA版使用Java操作Redis數(shù)據(jù)庫的方法,首先需要下載jedis.jar包,然后再工程中設(shè)置具體操作步驟跟隨小編一起學習下吧2021-08-08springcloud之Feign、ribbon如何設(shè)置超時時間和重試機制
這篇文章主要介紹了springcloud之Feign、ribbon如何設(shè)置超時時間和重試機制,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08使用AOP攔截Controller獲取@PathVariable注解傳入的參數(shù)
這篇文章主要介紹了使用AOP攔截Controller獲取@PathVariable注解傳入的參數(shù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08