精华内容
下载资源
问答
  • 主要给大家介绍了关于jquery动态赋值id与动态取id的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。
  • 今天小编就为大家分享一篇bootstrap下拉框动态赋值方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 主要介绍了JS实现给json数组动态赋值的方法,结合实例形式分析了javascript针对json数组的遍历、赋值等常用操作技巧,需要的朋友可以参考下
  • 参照、修改citypicker做四级联动,数据异步获取,动态赋值
  • 本文以柱形图和饼形图ajax动态赋值为例 一、饼形图赋值步骤 (1)jsp页面 <!-- 引入echarts官方js --> [removed][removed] <body> <!-- 为 ECharts 准备一个具备大小(宽高)的 DOM 饼形图 --> ...
  • SpEL + AOP实现注解的动态赋值,注解动态赋值 一、自定义注解 先聊聊这个需求,我需要根据用户的权限对数据进行一些处理,但是痛点在哪里呢?用户的权限是在请求的时候知道的,我怎么把用户的权限传递给处理规则...

    SpEL + AOP实现注解的动态赋值,注解动态赋值

     

    一、自定义注解

    先聊聊这个需求,我需要根据用户的权限对数据进行一些处理,但是痛点在哪里呢?用户的权限是在请求的时候知道的,我怎么把用户的权限传递给处理规则呢?想了以下几种方案:

    那么现在有个难点就是:我怎么把 request 的权限参数传递到 response 中呢?当然可以在 Spring 拦截器中处理,但是我不想把这段代码侵入到完整的鉴权逻辑中。突然想到,我能不能像 spring-data-redis 中 @Cacheable 一样,利用注解和 SpEL 表达式动态的传递权限参数呢?然后在 ResponseBodyAdvice 读取这个注解的权限参数,进而对数据进行处理。

    首先,我们需要有个自定义注解,它有两个参数:key 表示 SpEL 表达式;userType 表示权限参数。

    @Target(ElementType.METHOD)
    @Retention(RetentionPolicy.RUNTIME)
    public @interface ResponseSensitiveOverride {
    
        /**
         * SPEL 表达式
         *
         * @return
         */
        String key() default "";
    
        /**
         * 1:主账号、2:子账号
         */
        int userType() default 1;
    }

    然后,把这个注解放在路由地址上,key 写入获取权限参数的 SpEL 表达式:

        @ResponseSensitiveOverride(key = "#driverPageParam.getUserType()")
        @RequestMapping(value = "/queryPage", method = RequestMethod.POST)
        public ResponseData<PageVo<AdminDriverVo>> queryPage(@RequestBody AdminDriverPageParam driverPageParam) {
            return driverService.queryPageAdmin(driverPageParam);
        }

    二、SpEl + AOP 注解赋值

    现在 SpEL 表达式是有了,怎么把 SpEL 表达式的结果赋值给注解的 userType 参数呢?这就需要用 Spring AOP 、Java 反射 和 动态代理 的知识。

    @Aspect
    @Component
    public class SensitiveAspect {
    
        private SpelExpressionParser spelParser = new SpelExpressionParser();
    
        /**
         * 返回通知
         */    
        @AfterReturning("@annotation(com.yungu.swift.base.model.annotation.ResponseSensitiveOverride) && @annotation(sensitiveOverride)")
        public void doAfter(JoinPoint joinPoint, ResponseSensitiveOverride sensitiveOverride) throws Exception {
            //获取方法的参数名和参数值
            MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature();
            List<String> paramNameList = Arrays.asList(methodSignature.getParameterNames());
            List<Object> paramList = Arrays.asList(joinPoint.getArgs());
    
            //将方法的参数名和参数值一一对应的放入上下文中
            EvaluationContext ctx = new StandardEvaluationContext();
            for (int i = 0; i < paramNameList.size(); i++) {
                ctx.setVariable(paramNameList.get(i), paramList.get(i));
            }
    
            // 解析SpEL表达式获取结果
            String value = spelParser.parseExpression(sensitiveOverride.key()).getValue(ctx).toString();
            //获取 sensitiveOverride 这个代理实例所持有的 InvocationHandler
            InvocationHandler invocationHandler = Proxy.getInvocationHandler(sensitiveOverride);
            // 获取 invocationHandler 的 memberValues 字段
            Field hField = invocationHandler.getClass().getDeclaredField("memberValues");
            // 因为这个字段是 private final 修饰,所以要打开权限
            hField.setAccessible(true);
            // 获取 memberValues
            Map memberValues = (Map) hField.get(invocationHandler);
            // 修改 value 属性值
            memberValues.put("userType", Integer.parseInt(value));
    
        }
    }

    通过这种方式,我们就实现了为注解动态赋值。

    三、ResponseBodyAdvice 处理数据

    现在要做的事情就是在 ResponseBody 数据返回前,对数据进行拦截,然后读取注解上的权限参数,从而对数据进行处理,这里使用的是 SpringMVC 的 ResponseBodyAdvice 来实现:

    @Slf4j
    @RestControllerAdvice
    @Order(-1)
    public class ResponseBodyAdvice implements org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice {
    
        private static final ThreadLocal<Integer> threadLocal = new ThreadLocal<Integer>() {
            @Override
            protected Integer initialValue() {
                return SysUserDto.USER_TYPE_PRIMARY;
            }
        };
    
        @Override
        public boolean supports(MethodParameter returnType, Class converterType) {
            if (returnType.hasMethodAnnotation(ResponseSensitiveOverride.class)) {
                ResponseSensitiveOverride sensitiveOverride = returnType.getMethodAnnotation(ResponseSensitiveOverride.class);
                threadLocal.set(sensitiveOverride.userType());
                return true;
            }
            return false;
        }
    
        @Override
        public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {
            if (body != null && SysUserDto.USER_TYPE_SUB.equals(threadLocal.get())) {
                // 业务处理
            }
            return body;
        }
    }

    题外话,其实我最后还是摈弃了这个方案,选择了 Dubbo 过滤器的处理方式,为什么呢?因为在做数据导出的时候,这种方式没办法对二进制流进行处理呀!汗~ 但是该方案毕竟耗费了我一个下午的心血,还是在此记录一下,可能有它更好的适用场景!

    展开全文
  • Layui 动态赋值select

    2021-01-25 16:21:14
    layui中通过接口动态渲染select。 话不多说,直接先附上效果图,再附上源码 let count = response.data.services.length; for(let i = 0 ; i < count ; i ++){ $('#inputBox').append(new Option(response...

    layui中通过接口动态渲染select。
    话不多说,直接先附上效果图,再附上源码
    在这里插入图片描述

     let count = response.data.services.length;
     
     for(let i = 0 ; i < count ; i ++){
                $('#inputBox').append(new Option(response.data.services[i].name , response.data.services[i].FormatStorageMedium)); 
         };
      form.render("select");
    
    展开全文
  • layui的下拉框动态赋值

    万次阅读 2020-02-01 13:42:00
    第三步:编写js文件,实现动态赋值 < script > //下拉框可能会用到 New option //这个里面的参数说明 第一个是显示的文本,第二个是value值 //例如:new Option(item.xm, item.id)第一个参数是下拉列表...

    代码说明部分

    第一步:先把layui官方给的模板粘到自己的前端
    注:下面的代码是我直接从layui官网粘过来的

    <div class="layui-form-item">
        <label class="layui-form-label">选择框</label>
        <div class="layui-input-block">
          <select name="city" lay-verify="required">
            <option value=""></option>
            <option value="0">北京</option>
            <option value="1">上海</option>
            <option value="2">广州</option>
            <option value="3">深圳</option>
            <option value="4">杭州</option>
          </select>
        </div>
    </div>
    

    第二步:再把上面的代码删除到最简的样式 如下代码片段所示 中间内容根据自己的修改

    <div class="layui-form-item">
    	<label class="layui-form-label">所属院系</label>
    		<div class="layui-input-block">
               <select name="dp" id="dp" lay-verify="required" lay-filter="xmFilter">
                   <option value=""></option>
               </select>
            </div>
    </div>
    

    第三步:编写js文件,实现动态赋值

    <script>
           //下拉框可能会用到 New option
           //这个里面的参数说明 第一个是显示的文本,第二个是value值 
           //例如:new Option(item.xm, item.id)第一个参数是下拉列表中显示的值  第二个参数是选中传递给后台的值
            layui.use(['form', 'upload', 'layer'],function(){
                var form = layui.form;
                $.ajax({
                    url: 'department_json.php',
                    dataType: 'json',
                    type: 'get',
                    success: function (data) {
                        console.log(data);//下面会提到这个data是什么值
                        //使用循环遍历,给下拉列表赋值
                        $.each(data.data, function (index, value) {
                            // console.log(value.department_id);
                            $('#dp').append(new Option(value.department_name,value.department_id));// 下拉菜单里添加元素
                        });
                        layui.form.render("select");//重新渲染 固定写法
                    }
                })
            });
    </script>
    

    可能很多人会问,这个数据从什么地方来,这就要看你们后台给你们什么样的数据了
    我的后台数据是这个样子的

    {"code":0,"msg":"","count":4,"data":[{"id":"1","department_id":"10001","department_name":"信息工程学院"},{"id":"2","department_id":"10002","department_name":"人文学院"},{"id":"3","department_id":"10003","department_name":"电子工程学院"},{"id":"6","department_id":"1111222","department_name":"11111222"}]}
    

    格式化后的数据格式为

    {
      "code": 0,
      "msg": "",
      "count": 4,
      "data": [
        {
          "id": "1",
          "department_id": "10001",
          "department_name": "信息工程学院"
        },
        {
          "id": "2",
          "department_id": "10002",
          "department_name": "人文学院"
        },
        {
          "id": "3",
          "department_id": "10003",
          "department_name": "电子工程学院"
        },
        {
          "id": "6",
          "department_id": "1111222",
          "department_name": "11111222"
        }
      ]
    }
    

    其实这个data就是我们响应回来的json数据
    在这里插入图片描述
    但是我的数据是在data中
    在这里插入图片描述
    所以我会在这里用data.data 去循环我自己data中的值

    $.each(data.data, function (index, value) {
       	// console.log(value.department_id);
        $('#dp').append(new Option(value.department_name,value.department_id));// 下拉菜单里添加元素
    });
    

    这个value是什么值呢? 我们可以打印出来看下
    在这里插入图片描述
    我们可以清晰的看见就是通过each循环 打印出了每一行的值 再取我们要的值就可以了 例如我们要id 就可以直接写成value.id

    演示结果部分在这里插入图片描述

    展开全文
  • select下拉框赋值1.使用JS实现新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右...


        记录分享一下个人常用的对select下拉框的动态操作,有错误的还请指正,方法肯定不止这几种,欢迎各位补充。

    1.使用JS实现

    动态赋值、默认选中、删除

    //html 代码
    <select id="select_one">
    	<option></option>
    </select>
    
    //js 代码
    // 定义一个变量 arr
    let arr = ['百度','腾讯','阿里巴巴','字节跳动','京东','拼多多']
    
    //js 动态赋值
    let com = document.getElementById("select_one");
    for( let i = 0;i<arr.length;i++){
    	com.options.add(new Option(arr[i],i));
    }
    
    //js 默认选中
    let options = document.getElementById("select_one").options;
    for(let i = 0;i<options.length;i++){
    	if(options[i].value==2){//根据id选中阿里
    		options[i].selected = true;
    	}
    }
    
    //js 删除option(删除第1个options)
    com.options.remove(1);
    

    2. 使用jQuery实现

    动态赋值、默认选中、删除

    //html 代码
    <select id="select_two">
    	<option></option>
    </select>
    
    //js 代码
    // 定义一个变量 arr
    let arr = ['百度','腾讯','阿里巴巴','字节跳动','京东','拼多多']
    
    //jQuery 动态赋值第一种
    let oHtml = '';
    for(let i=0;i<arr.length;i++){
    	oHtml+='<option value="'+i+'">'+arr[i]+'</option>';
    }
    $("#select_two").html(oHtml);
    
    //jQuery 动态赋值第二种
    for(let i=0;i<arr.length;i++){
    	if(arr[i]=="腾讯"){//默认选中腾讯
    		$("#select_two").append("<option value='"+i+"' selected=true >"+arr[i]+"</option>");
    	}else{
    		$("#select_two").append("<option value='"+i+"'>"+arr[i]+"</option>");
    	}
    }
    
    //根据value默认选中
    $("#select_two").find("option[value='5']").attr("selected",true);//选中拼多多
    
    //根据value移除选中
    $("#select_two").find("option[value='1']").attr("selected",false);//移除选中腾讯
    
    //根据value实现删除
    $("#select_two").find("option[value='5']").remove();
    $("#select_two option[value='0']").remove();
    

    对多选下拉框进行批量操作

    //html 代码
    <select id="select_four " multiple="multiple"   style="height: 200px;width: 100px;">
    	<option value="0" selected="selected">百度</option>
    	<option value="1" selected="selected">腾讯</option>
    	<option value="2" selected="selected">阿里巴巴</option>
    	<option value="3" >字节跳动</option>
    	<option value="4" >京东</option>
    	<option value="5" selected="selected">拼多多</option>
    </select>
    
    //批量选中 、批量移除选中
    setTimeout(function(){
    	//移除选中所有id为基数的
    	$("#select_four option").each(function(){
    		if($(this).val()%2==0){
    			$("#select_four").find("option[value='"+$(this).val()+"']").attr("selected",false);
    		}
    	});
    	//选中所有id为偶数的
    	$("#select_four option").each(function(){
    		if($(this).val()%2!=0){
    			$("#select_four").find("option[value='"+$(this).val()+"']").attr("selected",true);
    		}
    	});
    },2000);
    

    3.源码

        不管是用JS还是用jQuery实现select下拉框的动态操作,无非都是先取到对应的dom节点,然后实现增删option;选中与非选中都是遍历所有option,通过value或者文本判断是否符合选中或非选中的条件(以下代码都是通过value进行判断的),设置selected所对应的属性来实现。

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8" />
    		<title>select动态赋值、默认选中、删除</title>
    		<script type="text/javascript" src="js/jquery-2.0.3.min.js"></script>
    	</head>
    	<body>
    		<h3>单选框</h3>
    		<select id="select_one">
    			<option></option>
    		</select>
    		<select id="select_two">
    			<option></option>
    		</select>
    		<select id="select_three">
    			<option></option>
    		</select>
    		<br>
    		<h3>多选框</h3>
    		<select id="select_four" multiple="multiple" size=3  style="height: 200px;width:100px"></select>
    		<select id="select_five" multiple="multiple"   style="height: 200px;width: 100px;">
    			<option value="0" selected="selected">百度</option>
    			<option value="1" selected="selected">腾讯</option>
    			<option value="2" selected="selected">阿里巴巴</option>
    			<option value="3" >字节跳动</option>
    			<option value="4" >京东</option>
    			<option value="5" selected="selected">拼多多</option>
    		</select>
    	</body>
    	<script type="application/javascript">
    		//全局变量 arr
    		let arr = ['百度','腾讯','阿里巴巴','字节跳动','京东','拼多多']
    		
    		/** js实现*/
    		//js 动态赋值
    		let com = document.getElementById("select_one");
    		for( let i = 0;i<arr.length;i++){
    			com.options.add(new Option(arr[i],i));
    		}
    		//js 默认选中
    		let options = document.getElementById("select_one").options;
    		for(let i = 0;i<options.length;i++){
    			if(options[i].value==2){//根据id选中阿里
    				options[i].selected = true;
    			}
    		}
    		//js 删除option(删除第1个options)
    		com.options.remove(1);
    		
    		/**jq实现**/
    		//jq 通过拼接html实现 动态赋值
    		let oHtml = '';
    		for(let i=0;i<arr.length;i++){
    			oHtml+='<option value="'+i+'">'+arr[i]+'</option>';
    		}
    		$("#select_two").html(oHtml);
    		
    		for(let i=0;i<arr.length;i++){
    			if(arr[i]=="腾讯"){
    				$("#select_three").append("<option value='"+i+"' selected=true >"+arr[i]+"</option>");
    			}else{
    				$("#select_three").append("<option value='"+i+"'>"+arr[i]+"</option>");
    			}
    		}
    		//jq实现动态选中 、移除选中
    		setTimeout(function(){//为了看清楚效果,两秒后执行
    			$("#select_two").find("option[value='5']").attr("selected",true);//选中拼多多
    			$("#select_three").find("option[value='1']").attr("selected",false);//移除选中腾讯
    			},2000);
    		
    		
    		//多选下拉框赋值  并且选中id为基数的
    		for(let i=0;i<arr.length;i++){
    			if(i%2==0){
    				$("#select_four").append("<option value='"+i+"' selected=true >"+arr[i]+"</option>");
    			}else{
    				$("#select_four").append("<option value='"+i+"'>"+arr[i]+"</option>");
    			}
    		}
    		
    		//批量选中 、批量移除选中
    		setTimeout(function(){
    			//移除选中所有id为基数的
    			$("#select_four option").each(function(){
    				if($(this).val()%2==0){
    					$("#select_four").find("option[value='"+$(this).val()+"']").attr("selected",false);
    				}
    			});
    			//选中所有id为偶数的
    			$("#select_four option").each(function(){
    				if($(this).val()%2!=0){
    					$("#select_four").find("option[value='"+$(this).val()+"']").attr("selected",true);
    				}
    			});
    		},2000);
    		
    		//删除指定的option
    		setTimeout(function(){
    			$("#select_five").find("option[value='5']").remove();
    			$("#select_five option[value='0']").remove();
    		},2000);
    		
    	</script>
    </html>
    
    
    展开全文
  • html: <div class="layui-form-item"> <label for="L_username" class="layui-form-label"> <span class="x-red"></span>客户名称: </label> <div class="layui-input-...
  • 微信小程序数组动态赋值

    千次阅读 2018-10-27 09:58:39
    作为一个小白,最近有兴趣试了试小程序开发,发现小程序里面写js和写...然后就是对数组的赋值,直接在setData里面是不可以给数组元素动态赋值的,那么怎么解决嘞。来个代码看看。 js 关注点在n[],p[](命名不规范~~...
  • 本文实例讲述了jQuery实现动态给table赋值的方法。分享给大家供大家参考,具体如下: html 请忽视各种class,因为前端用的是layui 昵称 加入时间 签名 </thead>
  • VUE 新增 动态赋值变量

    千次阅读 2019-09-19 11:41:09
    [绑定动态的一级项目变量](https://img-blog.csdnimg.cn/20190919113621979.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXh...
  • c语言中数组的动态赋值

    千次阅读 2019-01-12 19:22:34
    动态赋值法在c语言程序中有着很大的作用,比如输入几个数比较他们的大小,也可以与冒泡排序法相结合,从而使程序易于编译执行 #include &lt;stdio.h&gt;//动态赋值法,输入10个数,比较他们的大小 #include...
  • layui下拉框动态赋值html代码:js代码:上图: html代码: <div class="layui-input-inline"> <select id="service" name="service" lay-verify="required" lay-filter="business" class="select"> ...
  • 小程序echart动态赋值

    千次阅读 2019-09-05 17:12:59
    首先,当你到达这一步时,你已经吧echart引入小程序。所以直接进入主题(如小程序里还未引入echart,可参考 ...) 可以先看整体效果,还附带了tab切换,可自行删改: ...3、setOption拿到值后,赋值给对应的X轴,y轴
  • layui table 动态赋值

    千次阅读 2020-07-16 16:57:29
    sort: true} , { field: 'OUTCNT', title: '离职', width: 80, sort: true } ] ] , data: workTaskDataJson --------将json赋值给table //将获取的json赋值给table //,skin: 'line' //表格风格 , even: true , ...
  • 需求是这样: ajax获取数据如下 { "code": "200", "data": { "SumAmount": 200, "List": [{ "amount": 100, "sex": "male", "fee": 1, "id": 98, "status": 2, "time": "2015-08-11" ... }
  • layui的select动态赋值 <select id="ZhiWuErJi" class="layui-input " type1="flow_select" isflow="1" required="required" name="ZhiWuErJi">  </select> $(window).load(function () { var q1...
  • Layui Form 动态赋值select

    千次阅读 2020-11-24 11:54:27
    $.ajax({ url: '/queryConnectName', dataType: 'json', //服务器返回json格式数据 type: 'get', //HTTP请求类型 timeout: 10000, //超时时间设置为10秒; success: functio...
  • 【前端框架】vue~动态赋值

    千次阅读 2020-04-09 23:04:15
    我们的页面大多数时候是动态页面,故需要在页面编写时预留口子在页面显示插入要显示的内容。 本文以【前端框架】vue~hello world中的项目进行演示 图(1)中红线圈出来的部分,使用{{ }}在指定的区域插入目标内容。此...
  • 二维数组动态赋值

    千次阅读 2020-02-18 11:27:38
    动态赋值 int [][]arr=new int[行][列] 遍历数组 int [ ] [ ] arr = { { 11 , 12 , 13 } , { 21 , 22 , 23 } , { 31 , 32 , 33 } } ; for ( int i = 0 ; i < arr . length ; i ++ ) { //行 ...
  • 模态框动态赋值

    千次阅读 2019-01-15 17:03:07
    模态框动态赋值,可以有多种方式:1、每次一个个填充;2、直接针对模态框中的ID赋值。。。 今天说下同事犯的错误,大家引以为鉴: 首先如图: 他在点击详情链接时,是能拿到相关参数的,进去具体模态框后的数据...
  • 根据实际情况判断给form的action动态赋值转向另外站点
  • 下拉框jQuery动态赋值

    千次阅读 2019-04-18 16:17:10
    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <script src="./assets/libs/jsLibs/jquery.min.js"></script> </head> <body> ......

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 448,749
精华内容 179,499
关键字:

动态赋值