zoukankan      html  css  js  c++  java
  • 生成下拉框的几种方法总结——数据来源:枚举

    上节介绍数据来源是数据库,这节介绍对枚举进行数据获取,形成下拉列表。

    使用场景:某些状态值获取等,一般是数据量小,不需要在数据库中进行维护的数据集


    1、前提要有枚举数据

    package com.test.entity.neworder;
    
    import java.util.Objects;
    
    /**
     * 新订单状态
     *
     * @author 刘涛
     */
    public enum NewOrderStateEunm {
      //已删除
      已删除(0, "已删除"),
      //已创建
      已创建(1, "已创建"),
      //已发布
      已发布(2, "已发布"),
    
      Integer index;
      String state;
    
      NewOrderStateEunm(Integer index, String state) {
        this.index = index;
        this.state = state;
      }
    
      public Integer getIndex() {
        return index;
      }
    
      public String getState() {
        return state;
      }
    
      /**
       * 通过index获取value
       *
       * @param index 枚举索引
       * @return 枚举值
       */
      public static String getValue(Integer index) {
        for (NewOrderStateEunm c : NewOrderStateEunm.values()) {
          if (Objects.equals(c.getIndex(), index)) {
            return c.getState();
          }
        }
        return null;
      }
    
      /**
       * 通过value获取index
       *
       * @param state 枚举值
       * @return 枚举索引
       */
      public static String getIndex(String state) {
        for (NewOrderStateEunm c : NewOrderStateEunm.values()) {
          if (Objects.equals(c.getState(), state)) {
            return c.index + "";
          }
        }
        return "error";
      }
    }

    2、Controller层

     /**
       * 获取订单状态类型
       */
      @RequestMapping("/getNewOrderStateForSelect")
      @ResponseBody
      public List<Map<String, Object>> getNewOrderStateForSelect() {
        return EnumUtil.getNewOrderStateEnum();
      }

    3、EnumUtil工具类文件中

    package com.test.util;
    
    import com.test.entity.neworder.NewOrderStateEunm;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    public class EnumUtil {
    
      public static List<Map<String, Object>> getNewOrderStateEnum() {
        List<Map<String, Object>> lm = new ArrayList<>();
        Map<String, Object> m;
        for (int i = 0; i < NewOrderStateEunm.values().length; i++) {
          m = new HashMap<>();
          m.put("id", NewOrderStateEunm.values()[i].getIndex() + "");
          m.put("type", NewOrderStateEunm.values()[i].getState());
          lm.add(m);
        }
        return lm;
      }
    }

    4、前端页面

     <select type="text" id="stateCode" name="state" lay-filter="state" lay-search
                                autocomplete="off"
                        ></select>

    5、由于我使用的是layui,所以js部分

    <script type="text/javascript">
    
      var $ = layui.jquery;
      $(function () {
          getNewOrderStateForSelect("stateCode");
      });
        
    /**
     * 获取订单状态列表
     * @param selectId
     */
    function getNewOrderStateForSelect(selectId) {
      var $selectId = $("#" + selectId);
      var url = "commonCtrl/getNewOrderStateForSelect";
      $.get(url, function (data) {
        console.log(data);
        var info = "<option value=''>请选择</option>";
        for (var i = 0; i < data.length; i++) {
          info += "<option value=" + data[i].id + ">" + data[i].type + "</option>";
        }
        $selectId.append(info);
        layui.use('form', function () {
          var form = layui.form;
          form.render('select');
    
        })
      })
    }
    
        
    </script>

     完毕!

    昨天还遇到一个比较复杂的获取方式:后台将枚举写的复杂了。如下:

     for(int i=0;i< SettleTypeNewEnum.values().length;i++){
            Map code=new HashMap();
            code.put(SettleTypeNewEnum.values()[i].getType(),SettleTypeNewEnum.values()[i].getIndex());
            payMethodCodeList.add(code);
          }

    所以,前端获取到的是{[object object],[object object]},用json解析一下就是{[张三:12],[李四:23]}这种格式,

    但是我想获取其中的值,直接调用对象中的属性,暂未发现有什么属性能直接获取到数据。

    so,只能利用以下这种方式解决了:

    function getNewPayMethodTypeForSelect(selectId) {
      var $selectId = $("#" + selectId);
      var url = "newSettleCtrl/getPayMethodCode";
      $.get(url, function (data) {
        var info = "<option value=''>请选择</option>";
        $.each(data.data,function(i,v){
          info += "<option value=" + v[Object.keys(v)[0]] + ">" + Object.keys(v)[0] + "</option>";
        });
        $selectId.append(info);
        layui.use('form', function () {
          var form = layui.form;
          form.render('select');
    
        })
      })
    }
  • 相关阅读:
    docker 之 docker-compose 初探
    docker 之 .net core 镜像制作
    docker 之 registry私有仓库(harbor)
    ASP.NET Core 学习笔记(认证授权)
    ASP.NET Core 学习笔记(http请求处理)
    ASP.NET Core 学习笔记(依赖注入)
    Linux基础编程之网络编程TCP实例
    功能包和CMakeLists.txt
    ROS的主节点(名称服务器)---roscore
    关于ros开发
  • 原文地址:https://www.cnblogs.com/yangyuke1994/p/9999328.html
Copyright © 2011-2022 走看看