springmvc匹配不到ajax发送的url怎么回事?

clipboard.png
clipboard.png

clipboard.png

clipboard.png

clipboard.png

clipboard.png

配置文件绝对没有问题,页面代码已经看了好多遍了没发现问题.找不到原因.工具用的idea

阅读 4.5k
5 个回答

知道答案了,原来不是找不到方法,而是接受不到参数.在方法的参数中使用MultipartFile[]接受图片,但是还必须要加上@RequestParam(required = false)注解,注解的参数表示这个参数可以为空.如果不使用这个注解就会出现我这个问题...

Controller的RequestMapping默认是GET请求. 你前端的请求是POST. 改成GET试试看.

  1. 其他controller的请求是否可以正常发起。
  2. 是否因为没有指定method为post

ajax中url前面加上项目的根路径,应该是路劲不对导致的

你把你的代码贴完整一点,我写过一个ajax上传文件的代码,希望你能找到原因
前端代码:

<form id="csvForm" enctype="multipart/form-data">
    <input id="accountName" name="accountName" value="${accountName}" hidden>
    <input type="button" value="导入" id="external_button"/>
    <input type="file" name="file" id="file"/>
</form>
//JS代码

/**
 * 上传按钮绑定事件
 */
$('#external_button').click(function () {
    if ($('#file').val() == "") {
        alertMessage("请先选择文件");
        return false;
    }
    var csvPath = $('#file').val();
    var fileExtendOff = csvPath.substring(csvPath.lastIndexOf('.')).toLowerCase();
    if (fileExtendOff != '.csv') {
        alertMessage("文件格式有误,请上传csv格式");
        return false;
    }
    doUpload();
    return false;
});

/**
 * 异步上传
 */
function doUpload() {
    var formData = new FormData($("#csvForm")[0]);
    $.ajax({
        url: contextPath + '/security/importExtReconFile.htm' ,
        type: 'POST',
        data: formData,
        async: false,
        cache: false,
        contentType: false,
        processData: false,
        success: function (data) {
            if (data.code == '200') {
               alertMessage(data.content);
               window.location.reload();
            } else {
               alertMessage(data.content);
                
            }
        }
    });
}

后台代码:

@ResponseBody
@RequestMapping(method = RequestMethod.POST, value = "/security/importExtReconFile")
public MessageBean importExtReconFile(@RequestParam("file") MultipartFile file,
        HttpServletRequest request) throws IOException {
    MessageBean messBean = new MessageBean(MessageCode.COMMON_SUCCESS);
    //获取页面参数
    String accountName = request.getParameter("accountName");
    //获取文件名
    String filename = file.getOriginalFilename();
    AccountPeriodPo accountPeriodPo = new AccountPeriodPo();
    InputStream fis = null;
    try {
        //获取上传文件的输入流
        fis = file.getInputStream();
        //1.检查对账文件数据的格式CSV
        MessageBean result = checkCSVFile(fis);
        if (!MessageCode.COMMON_SUCCESS.equals(result.getCode())) {
            logger.error("csv数据格式不正确");
            messBean.setCode(MessageCode.SYSTEM_ERROR);
            messBean.setContent(result.getContent());
            return messBean;
        }
        //2.存储到指定位置
        //省略业务逻辑...
    } catch (IOException e) {
        logger.error("文件导入失败", e);
        messBean.setCode(MessageCode.SYSTEM_ERROR);
        messBean.setContent("文件导入失败");
        return messBean;
    } finally {
        if (fis != null) {
            try {
                fis.close();
            } catch (IOException e) {
                logger.error("流关闭异常", e);
            }
        }
    }
    messBean.setContent("导入成功 !");
    return messBean;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题