精华内容
下载资源
问答
  • 代码中参数不能为空怎么解决
    千次阅读
    2020-12-19 05:46:59

    一、描述

    网站报如下错误

    二、分析

    1、经排查,是因为将spring.http.multipart.enabled设为false导致的(之所以将该参数改为false,是要解决"无效的服务器端响应. 服务器返回的数据不符合 JSON 格式"问题)

    2、继承CommonsMultipartResolver,重写isMultipart逻辑,针对特定url交由ServletFileUpload处理,其他的交由MultipartResolver处理

    三、解决

    继承CommonsMultipartResolver,重写isMultipart逻辑,url中包含elfinder的交由ServletFileUpload处理,其他的交由MultipartResolver处理,代码如下

    package mblog.boot;

    import org.springframework.context.annotation.Configuration;

    import org.springframework.web.multipart.commons.CommonsMultipartResolver;

    import javax.servlet.http.HttpServletRequest;

    @Configuration

    public class WebMultipartResolver extends CommonsMultipartResolver {

    /**

    * 这里是处理Multipart http的方法。如果这个返回值为true,那么Multipart http body就会WebMultipartResolver 消耗掉.如果这里返回false,那么就会交给后面的自己写的处理函数处理例如刚才ServletFileUpload 所在的函数

    * @see org.springframework.web.multipart.commons.CommonsMultipartResolver#isMultipart(javax.servlet.http.HttpServletRequest)

    */

    @Override

    public boolean isMultipart(HttpServletRequest request) {

    // 过滤金格生成文书保存的接口 兼容MultipartResolver 或者 ServletFileUpload

    if (request.getRequestURI().contains("elfinder")) {

    return false;

    }

    return super.isMultipart(request);

    }

    }

    注意:本文归作者所有,未经作者允许,不得转载

    更多相关内容
  • 在很多时候我们的Controller是需要对接收参数进行校验的,如果为空的会影响一些操作. 然后自己写了一个自定义注解实现了参数校验 上代码~~~~~~~~~~~~~~ 首先是自定义注解 import java.lang.annotation.Element...

    在很多时候我们的Controller是需要对接收参数进行校验的,如果为空的会影响一些操作.
    然后自己写了一个自定义注解实现了参数校验
    上代码~~~~~~~~~~~~~~
    首先是自定义注解

    import java.lang.annotation.ElementType;
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    import java.lang.annotation.Target;
    
    /**
     * @author hef
     * @date 2019-03-25 14:17
     */
    @Target({ElementType.PARAMETER})//参数级别
    @Retention(RetentionPolicy.RUNTIME) //注解保留到运行阶段
    public @interface ParamsNotNull {
    }
    

    然后是编写一个处理器

    import com.alibaba.fastjson.JSONObject;
    import com.lyorcw.system.common.Constant;
    import com.lyorcw.system.common.ParamsNotNull;
    import org.apache.commons.lang3.StringUtils;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.web.method.HandlerMethod;
    import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.lang.reflect.Parameter;
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * @author hef
     * @date 2019-03-25 14:26
     */
    public class CheckParamsInterceptor  extends HandlerInterceptorAdapter {
        private static Logger LOG = LoggerFactory.getLogger(CheckParamsInterceptor.class);
    
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
                throws Exception {
            if (!(handler instanceof HandlerMethod)) {
                LOG.warn("UnSupport handler");
                return true;
            }
            //拿到该方法上加了注解的参数名称
            List<String> list = getParamsName((HandlerMethod) handler);
            for (String s : list) {
                //获取到参数名称并判断是否为空
                String parameter = request.getParameter(s);
                if (StringUtils.isEmpty(parameter)){
                    JSONObject jsonObject = new JSONObject();
                    jsonObject.put("code", Constant.error);
                    jsonObject.put("msg", "必传参数错误");
                    response.setHeader("Content-type", "application/json;charset=UTF-8");
                    response.getWriter().write(jsonObject.toJSONString());
                    return false;
                }
            }
            //如果拿到的对象为空,说明没有此注解,直接放行
            return true;
        }
    
        /**
         * 拿到在参数上加了该注解的参数名称
         */
        private List getParamsName(HandlerMethod handlerMethod) {
            Parameter[] parameters = handlerMethod.getMethod().getParameters();
            List<String> list = new ArrayList<String>();
            for (Parameter parameter : parameters) {
                if(parameter.isAnnotationPresent(ParamsNotNull.class)){
                    list.add(parameter.getName());
                }
            }
            return list;
        }
    }
    

    接着是在配置文件生效

    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
    
    /**
     * @author hef
     * @date 2019-03-25 15:09
     */
    @Configuration
    public class WebMvcConfig implements WebMvcConfigurer {
        CheckParamsInterceptor checkSourceInterceptor = new CheckParamsInterceptor();
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
        	//如果除了接口的请求还有其他请求的话可以在所有的接口前面加个前缀区分开
            registry.addInterceptor(checkSourceInterceptor).addPathPatterns("/**");
        }
    }
    

    接着是在Controller的接口参数上面用自定义注解在这里插入图片描述
    这个时候在执行这个方法之前拦截器会拦截到被请求的接口,去校验接口参数上面是否有这个注解,如果有注解的则校验参数是否为空,如果为空就会被打回去

    结果:
    在这里插入图片描述
    只要参数是空串或者为null就可以拦截下来

    展开全文
  • 问题定位三、解决问题1.确保页面onload在onLaunch之后执行2. 启动时尝试获取token3. 页面onload方法3. 结果四、总结 简账(开源记账软件)-前端环境简介及部署 前言 由于自己有记账的需求,在尝试使用过市面上的...


    简账(开源记账软件)-解决小程序扫码授权提示Token不能为空


    前言

    由于自己有记账的需求,在尝试使用过市面上的记账软件后,发现大多数都有以下几个问题

    • 广告比较多,主要分为信息流广告及金融类广告
    • 页面太痈肿,使用体验不好
    • 部分高级功能需要收费,如数据导出

    所以就萌生了自己做一个记账软件的想法,这个想法在2020年5月左右落地的,到目前也快有一年了。
    本着OpenSource的想法,已全部开源,也想借写博客的机会获得一些Star❤

    测试环境

    正式环境:

    • 小程序:微信搜索【简账】
    • PC端:简账PC端

    Github开源地址:

    后续要完成的功能(重要性至上而下)

    • 支持多账本,可自定义维护
    • 支持设置预算(年月预算)
    • 支持多账本间冲销
    • 支持Excel导出(年或月可自定义)
    • 支持多人记账及家庭账本

    待解决的Bug

    • 如用户未登录过小程序,小程序扫码授权会提示Token不能为空(提供者:喵了个小咪咪

    写在后面
    如果你有其他的想法或问题欢迎给我留言,或在Github上提Pr&Issue
    tips:如果你也想你写的东西被人使用,欢迎跟我一起维护简账~

    往期链接


    一、问题复现

    首先感谢一下喵了个小咪咪的反馈

    经测试,通过以下步骤可以复现

    1. 简账小程序退出
    2. 打开简账PC端
    3. 微信扫码
    4. 提示授权
    5. 点击授权后,会提示Token不能为空

    二、问题分析定位

    既然能复现问题,那么解决问题也不是什么难事了!

    1.首先看一下正常的登录流程(部分细节已简化)

    在这里插入图片描述

    2.问题定位

    通过Debug发现以下两种情况会出现授权时提示token不能为空

    • 用户还未登录就扫码授权
    • 用户网络环境较差时,还未获取到token就发起了授权

    综上所述,正确的授权流程图如下所示
    在这里插入图片描述

    三、解决问题

    tips:以下代码均可在Github中找到,代码请查看简账微信小程序

    1.确保页面onload在onLaunch之后执行

    在main.js中挂载$store

    Vue.prototype.$onLaunched = new Promise(resolve => {
        Vue.prototype.$isResolve = resolve
    })
    Vue.prototype.$store = store	// 挂载在Vue实例上
    

    2. 启动时尝试获取token

    如果有openId则请求到token再放行,如没有直接放行

    onLaunch: function() {
    	console.log('App Launch');
    	let userInfo = uni.getStorageSync("userInfo");
    	if(userInfo.openId) {
    		// 如果本地有存储的用户信息
    		this.$u.api.wxLogin({
    			openId : userInfo.openId,
    			username: userInfo.name,
    			nickname: userInfo.nike,
    			sex: userInfo.sex,
    			avatar: userInfo.avatarUrl
    		}).then(res => {
    			this.login(res);
    			this.$isResolve();
    		}).catch(e => {
    			console.log('login error');
    			this.$isResolve();
    		});
    	}else {
    		// tips:微信审核不通过,取消强制登录
    		// 立即跳转到登录页面
    		// uni.redirectTo({
    		//     url: '/pages/login/index'
    		// });
    		this.$isResolve();
    	}
    }
    

    3. 页面onload方法

    async onLoad(option) {
    	console.log('detail show');
    	//option为object类型,会序列化上个页面传递的参数
    	const uuid = option.scene
    	//等待登录成功	
    	await this.$onLaunched;
    	if(!this.hasLogin) {
    		this.show = true;
    	} else{
    		// 授权登录
    		if(uuid && uuid.length === 32) {
    			this.authInfo.uuid = uuid
    			// 获取用户信息
    			this.getUserToken()
    			await this.scannQrcode(uuid)
    			this.authInfo.showAuth = true
    		}
    	}
    }
    

    3. 结果

    经测试,已解决此Bug。
    如果感兴趣,你也可以自己试一下~
    在这里插入图片描述

    四、总结

    在社区中写了几篇简账的博客后,现已有110+用户。在此感谢注册了简账的各位,谢谢😊
    如果你觉我这个项目还不错的话,不妨给我的Github点个Star♥

    在这里插入图片描述

    展开全文
  • 解决 SpringMVC @PathVariable注解参数为空参数不存在的问题 一、@PathVariable 用法 1、@PathVariable : 用于获取请求url的变量。 2、例如: @RequestMapping(value= {"/paths/{falgssss}"}) public...

          解决 SpringMVC 中 @PathVariable注解参数为空参数不存在的问题

     

    一、@PathVariable 用法

    1、@PathVariable : 用于获取请求url中的变量。

    2、例如:

        @RequestMapping(value= {"/paths/{falgssss}"})
    	public String paths (@PathVariable(name = "falgssss") String flag) {
    		return "@PathVariable 注解使用。。... flag ="+flag;
    	}

     

    3、url 请求:http://192.168.1.4:9090/jsp/json/paths/pathvariable112233

    4、结果显示如下:

     

    二、遇到问题

    1、@PathVariable 中url变量,不存在的情况下(为空),会抛出404错误,无法请求到对应的url 。

     

    三、问题解决

    1、@PathVariable 注解中增加属性 required = false ;

    2、@RequestMapping 注解中增加url,值为: 去掉 @PathVariable 注解的占位符参数

    3、表述的不是很清楚,代码参考如下:

        @RequestMapping(value= {"/paths/{falgssss}" , "/paths"})
    	public String paths (@PathVariable(required = false ,name = "falgssss") String flag) {
    		return "@PathVariable 注解使用。。... flag ="+flag;
    	}

    4、若没有 required 属性,请确认 Spring 版本号。 (从 Spring 4.3.3 增加该功能的。)

     

    四、问题追踪

    1、查看: org.springframework.web.bind.annotation.PathVariable 源码 ,大意:“是否需要url路径变量,默认是需要。”,从 Spring 4.3.3 增加该功能的。

     

     

    展开全文
  • 在c#开发过程可能会出现这样的问题,如题,如题,而编译器又告诉你哪里错了 还有编译没有,就是报这个莫名其妙的错误,像本文的错误是有的值null,那么怎样 去找到这个问题原因呢,且看解决方法。 解决...
  • 当时就是一脸懵逼的,我去,我就只改个参数至于全部链接都有问题吧,,然后确认了下,这个scope参数是有的,问题到底在哪里?上网找了这边文章:链接:https://www.cnblogs.com/luosiding/p/8965740.html 原因...
  • spring data jpa 查询参数为空的问题

    千次阅读 2019-10-09 23:34:44
    spring data jpa 查询参数为空的问题 https://bbs.csdn.net/topics/390968657/
  • spring data jpa 查询参数动态可为空的问题 解决https://bbs.csdn.net/topics/390968657/
  • Spring+Mybatis项目,之前一直运行的好好的,修改了下配置文件后发现一个select查询一直返回结果。 跟踪 通过不断的调试发现,一旦传递的参数里面有中文参数,select语句返回就是空值,基本上可以断定是编码...
  • 有图有真相,新建的项目就建了控制器?
  • DataType 参数不能为空

    千次阅读 2014-04-03 08:48:09
    “dataType”参数不能为空参数名: dataType 在使用dt.Columns.Add时出现“dataType”参数不能为空参数名: dataType的错误。 语句如下,dt.Columns.Add("ID", System.Type.GetType("System.Int"));  ...
  • 在Spring Boot应用,框架会自动解析应用的配置文件 ...) 获取在其中配置的localPointInfo参数的值,但是获取了,代码片段如下 '''  @Value("${localPointInfo}")  public static String lo...
  • ajax post传输到后台为空? 我来告诉你这个怎么解决!网上那是一大堆,上代码的上代码,语言描述的语言描述,但也没见有个搞定的! $.ajax({ url:'/modal_add_teacher/', type: 'POST', data: {'name':name, '...
  • springmvc设置接收请求参数为空

    千次阅读 2021-01-26 21:49:52
    在以下代码中,请求参数age不能为空,框架调用Integer.valueOf(strAge)age为空会出错 @Controller @RequestMapping("/test") public class MyController { @RequestMapping(value ={"/some.do"},method = Request...
  • 有时候我们传的参数很大,比如图片转成的base64字符,如果普通传参肯定会报错,可以把这种参数放在from-data的body里面,我们JAVA后台需要接收from-data的参数。 public ReturnModel fromDateTest...
  • @Pathvariable的参数允许为空的问题的解决

    万次阅读 多人点赞 2019-03-07 10:58:27
    @关于@Pathvariable的参数允许为空(required = false)无法实现的问题 如图: ...首先@PathVariable不能为空不能设置默认值,因为null对于url是无意义的。 此时有两种方法解决: 1、将@Pathvar...
  • 解决Unity下通过代码修改prefab的参数不生效的问题 问题 做Unity开发时,经常需要写一些Editor代码,用来提高开发的效率,常见的一种情况就是通过代码修改场景里Prefab的参数。一般修改后会发现一切如期望般正常,但...
  • 今天在调试项目的时候遇到一个坑,用Postman发送一个post请求,在Springboot项目使用@RequestBody接收时参数总是报存在,但是多次检查postman上的请求格式以及项目代码都没有问题 Postman: 请求参数: { ...
  • 本文主要解决了因为全局异常捕获类返回值类型不当导致请求一直返回200状态码响应的问题,即传请求必要参数成功响应,并简单介绍了@ExceptionHandler的返回值类型。
  • Swagger Body 为空 /@ApiModel value 注释内容都为空解决方案 问题描述: 开发过程发现有个接口很神奇,就是这个样子: body的Model注释点击显示是的 { },body体里也是的,什么都没有,全是空白!检查代码...
  • Idea的这个设置真的太人性化,建议完善。此设置浪费了自己很多时间,固分享于此,望助你解决问题。本方法适用于IntelliJ IDEA 2019.3 x64及之后版本(截止到发稿日期最新版:2020.03版)应该都可以使...
  • 目录1、先看一个例子2、这是个错误的例子3、 Mockito.when时参数用Mockito.any(实际参数对象的class)4、 Mockito.when时重写静态argThatArgumentMatcher对象的matches方法 大家都知道通过Mockito 可以mock数据...
  • MyBatis 参数允许为空的异常解决方案

    千次阅读 2016-06-21 09:17:53
    MyBatis 参数允许为空的异常解决方案······
  • 如果出现结果 appkey 不能为空,但是已经设置了appkey了的,那么很有可能是http的header没有设置好。 设置一下就好了 1 接口说明 1.1请求数据 POST: 请求头:content-type: application/x-...
  • 如何实现当查询值为空时,作为查询条件如上,在C#制作了一个小的数据库查询软件,其中有很多个查询条件现在想要实现在查询的时候,将那些没有输入数据的作为查询条件由于SQL知识比较缺乏..还得麻烦大家...
  • 错误代码如下: 跳转之前的页面: clickScan(index,row) { this.$router.push({ path: '/biz/AssociationAcitvityEnroll', params: { associationId: row.associationId } }) }, 跳转之后的页面 mounted: ...
  • @RequestHeader 请求头参数为空ServletRequestBindingException异常处理 获取请求头方式 使用注解 @RequestHeader @PostMapping(value = "/test/header") public void post(@RequestHeader(value="sign") String ...
  • 不能为 null。参数名: source

    万次阅读 热门讨论 2017-02-25 16:10:05
    子窗体FormA 继承父窗体FormB,但是再次想打开子窗体时,子窗体打开(窗体界面也出来),直接显示:值不能为null,参数名:source 打开调用堆栈,则显示如下: 于是乎就找到对应窗体FatherOfGroup窗体代码的...
  • $.post 发送请求时参数为空

    千次阅读 2020-07-31 18:19:15
    user.addUser = function(){ var f = $("#add_frm");//获取表单对象,对应html... // data:f.serialize(), //错误时候的代码 f.serialize() //正确时候的代码 ,function(data){ $.messager.alter("",data,"info") .
  • ![图片说明](https://img-ask.csdn.net/upload/201608/16/1471312339_883640.jpg) ![图片说明]... 前台代码 !...控制器代码 ...数据层代码 ...急求 原因和解决办法

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 532,906
精华内容 213,162
热门标签
关键字:

代码中参数不能为空怎么解决