Spring 常见问题集合

1 springmvc接收数组类型参数为null

前端JS代码:

//获取选中标签
var checkboxs= $('#added_labels input:checkbox');
//储存选中id
var ids= [];
$.each(checkboxs,function (i,obj) {
    ids.push(obj.value);
})
//发起ajax请求
$.ajax({
    url:'/test',
    type:'post',
    data:{'ids':ids},
    success: function (res) {
		console.log(res);
    }
});

后台JAVA代码:

@RequestMapping(value = "/test",method = RequestMethod.POST)
@ResponseBody
public BaseResult Test(@RequestParam(value="",required=true) String[] ids){
    ...........            ..........
}

其中参数 ids 后台无法接收到,显示为 null

解决方法:

  1. ajax发送请求时,添加 traditional 属性,并设置为true 即:traditional: true, (traditional 默认为 false 当为true阻止深度序列化,用于传递数组类型参数)。
$.ajax({
    url:'/test',
    type:'post',
    traditional: true,
    data:{'ids':ids},
    success: function (res) {
		console.log(res);
    }
});
  1. ajax不直接发送数组,而是发送String,使用toString方法转为json格式的String字符串
$.ajax({
    url:'/test',
    type:'post',
    traditional: true,
    data:{'ids':ids.toString()},
    success: function (res) {
		console.log(res);
    }
});
  1. 后台更改接收方式为List:
public BaseResult Test(@RequestParam(value="",required=true) List<String> ids){
    ...........            ..........
}

2 解决 Maven 无法自动下载依赖的问题

问题分析

无法下载依赖的情况大致有两类:

  • 无法通过 Maven 中央仓库提供的坐标下载(也许是网络环境导致)
  • 类库没有上传至中央仓库只能通过官网或其它渠道下载

解决思路:

  • 手动管理依赖,将依赖按传统的方式放入 libs 目录中。缺点是需要手动管理依赖版本。
  • 将依赖安装到本地仓库中,按照 Maven 下载依赖的优先级,会优先查找本地仓库中的依赖。缺点是协同开发时,其他开发人员会因为本地缺少依赖导致项目启动报错。

解决方案

以上解决思路虽然都可以解决缺少依赖的问题,但操作起来不太优雅,此时我们可以使用 Maven 提供的插件来解决这个问题

pom.xml 增加插件配置,关键配置如下:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-install-plugin</artifactId>
            <version>2.5.2</version>
            <executions>
                <execution>
                    <id>install-external-kaptcha</id>
                    <!-- 触发时机:执行 mvn clean 命令时自动触发插件 -->
                    <phase>clean</phase>
                    <configuration>
                        <!-- 存放依赖文件的位置 -->
                        <file>${project.basedir}/libs/kaptcha-2.3.jar</file>
                        <repositoryLayout>default</repositoryLayout>
                        <!-- 自定义 groupId -->
                        <groupId>com.google.code.kaptcha</groupId>
                        <!-- 自定义 artifactId -->
                        <artifactId>kaptcha</artifactId>
                        <!-- 自定义版本号 -->
                        <version>2.3</version>
                        <!-- 打包方式 -->
                        <packaging>jar</packaging>
                        <!-- 是否自动生成 POM -->
                        <generatePom>true</generatePom>
                    </configuration>
                    <goals>
                        <goal>install-file</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

通过该插件,我们可以在执行 mvn clean 命令时将项目所需要的依赖自动安装进本地仓库

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值