web中拖拽排序和java后台交互实现方法示例

 更新时间:2018年12月04日 09:17:11   作者:MXC肖某某  
这篇文章主要给大家介绍了关于web中拖拽排序和java后台交互实现的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一、业务需求

1,在后台的管理界面通过排序功能直接进入排序界面

2,在排序界面能够人工的手动拖动需要排序的标题,完成对应的排序之后提交

3,在app或者是前端就有对应的排序实现了

本文将详细介绍web拖拽排序和java后台交互的相关内容,下面话不多说了,来一起看看详细的介绍吧

二、页面展示

将整体页面效果展示出来之后如图所示(页面点击确定之后的效果是与java后台进行交互的):

三、设计思路:

后台:如果需要将排序的结果保存到数据库,那么必须要修改数据库中对应的起码一个字段(排序的序号sort),那么后台需要至少接收的参数有sort和id两个字段。我这边采用的是将这两个字段封装到对象,并且采用集合的方式传递给后台,因为对应的修改必须是针对数据库中需要排序的所有数据的操作。当然可以根据不同的业务实施不同的排序方式

前端:a,实现拖拽功能;b,需要能够提供实时的序列号sort和该序列号指定的id

四、前端设计:

1,下载插件:只需点击超链接,下载drag.zip并解压,就会自动转为drag.js文件,引用即可

2,代码实现:

 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="新&nbsp;&nbsp;增" class="Add_listButton" onclick="addList()">
  <input type="button" name="" value="排&nbsp;&nbsp;序" 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>点击排序的时候触发事件(需要能获取到当前的序号和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>拖拽效果的实现,引用了提供的drag.js

// 排序事件中的拖拽事件
  $('.sortOulMain').DDSort({
  target: 'li',
  floatStyle: {
   'border': '1px solid #ccc',
   'background-color': '#fff',
   'cursor': 'move'
  },
  //每次拖拽完成之后都会执行的函数
  up: function () {
  $("li").each(function(){
   $(this).children(".seqSort").val($(this).index()); //改变全新的sort隐藏的input的序号值
   })
  }
      });

五、后台设计: 

后台采用的就是比较传统的SSM框架了,主要就是对接收的参数的处理:

  A>SpringMVC中只需要注意对于参数的接收必须按照指定的name对应即可(这里list集合中参数的封装就不再强调了): 

  @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>如果这时候发现自己的SQL写的没有问题但是在执行的时候控制台还是报错了的话,那么必须要在连接数据库的时候加上这样一段代码就行了:allowMultiQueries=true 这个是在操作数据库批量修改时数据库的一个问题

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • Java带default方法接口的应用示例

    Java带default方法接口的应用示例

    这篇文章主要介绍了Java带default方法接口的应用,结合实例形式分析了java带default方法接口定义、用法及相关操作注意事项,需要的朋友可以参考下
    2019-08-08
  • Spring Boot 整合 Reactor实例详解

    Spring Boot 整合 Reactor实例详解

    这篇文章主要为大家介绍了Spring Boot 整合 Reactor实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • IDEA版使用Java操作Redis数据库的方法

    IDEA版使用Java操作Redis数据库的方法

    这篇文章主要介绍了IDEA版使用Java操作Redis数据库的方法,首先需要下载jedis.jar包,然后再工程中设置具体操作步骤跟随小编一起学习下吧
    2021-08-08
  • 数据库阿里连接池 druid配置详解

    数据库阿里连接池 druid配置详解

    本篇文章主要介绍了数据库阿里连接池 druid配置详解,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • struts2实现文件下载功能

    struts2实现文件下载功能

    这篇文章主要为大家详细介绍了struts2实现文件下载功能,一个非常常见的功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • JVM 方法调用之动态分派(详解)

    JVM 方法调用之动态分派(详解)

    下面小编就为大家带来一篇JVM 方法调用之动态分派(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • springcloud之Feign、ribbon如何设置超时时间和重试机制

    springcloud之Feign、ribbon如何设置超时时间和重试机制

    这篇文章主要介绍了springcloud之Feign、ribbon如何设置超时时间和重试机制,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • 使用AOP拦截Controller获取@PathVariable注解传入的参数

    使用AOP拦截Controller获取@PathVariable注解传入的参数

    这篇文章主要介绍了使用AOP拦截Controller获取@PathVariable注解传入的参数,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • springboot简单实现单点登录的示例代码

    springboot简单实现单点登录的示例代码

    本文主要介绍了springboot简单实现单点登录的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • 工厂方法模式_动力节点Java学院整理

    工厂方法模式_动力节点Java学院整理

    这篇文章主要介绍了工厂方法模式_动力节点Java学院整理的相关资料,需要的朋友可以参考下
    2017-08-08

最新评论