javascript - 我的调用 Spring Controller 失败

标签 javascript java spring spring-mvc controller

在我的 HTML 中,我有这个按钮:

<button id="download_button">Confirmer</button>

在我的 Js 中我有这个方法:

$("#download_button").click(function() {
   downloadMes();
});

    downloadMes: function(){
        var sources = this.map.getLayers().getArray().map(function(layer){
            var source_url = layer.getSource().getUrls()[0];
            var layer_name = layer.getSource().getParams()['LAYERS'];
            var request = '?VERSION=1.1.0&OUTPUTFORMAT=CSV';
            if(_.includes(this.downloadSources, source_url)){
                return source_url + request + '&TYPENAME=' + layer_name;
            }
        },this);
        var sourcesToCall = _.compact(sources);
        var jsonfile= {json:JSON.stringify(sourcesToCall)};
        $.ajax({
            type:'POST',
            url: "/downloadCSV",
            data: jsonfile,
            dataType: "json"
        });
    }

我已经创建了一个 Spring Controller --> DownloadCSVController :

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;


@Controller
public class DownloadCSVController {



    @RequestMapping(value = "/downloadCSV", method = RequestMethod.GET)
    public void getCSV(HttpServletRequest request, HttpServletResponse response, ModelMap model) throws IOException{

        System.out.println("DEBUT TELECHARGEMENT");
        // SOME LOGIC
        System.out.println("FIN TELECHARGEMENT");

    }
}

当我点击按钮时出现此错误:

POST http://localhost:8080/downloadCSV 404 (Introuvable)

出了什么问题?

最佳答案

将 ajax 调用更改为 GET 方法,如下所示

$.ajax({
            type:'GEt',
            url: "/downloadCSV",
            data: jsonfile,
            dataType: "json"
        });

或者将 spring Controller 方法更改为 post

 @RequestMapping(value = "/downloadCSV", method = RequestMethod.POST)
    public void getCSV(HttpServletRequest request, HttpServletResponse response, ModelMap model) throws IOException{

        System.out.println("DEBUT TELECHARGEMENT");
        // SOME LOGIC
        System.out.println("FIN TELECHARGEMENT");

    }

PS:如果您的项目有一些根文件夹,并且基于调度程序 servlet url 映射,在请求类似 localhost:8080/yourproject/downloadCSV 时也指定了其名称

关于javascript - 我的调用 Spring Controller 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39385622/

相关文章:

java - 如何在 MockClientHttpRequest/Response 中使用 RestTemplate xml 文件

用于长时间运行流程的 Spring SSE

javascript - 使用 javascript 显示错误

java - Javax.net.ssl.SSLHandShakeException:没有适当的协议(protocol)(IKVM dll)

java - Setlayout 删除我的 JPanel 继承类。为什么?

java - 在 hql 中将字符串列转换为日期

java - jhipster,Java端的管理员角色识别

javascript - NodeJs 或 PhantomJS 上的 NewBee : Function names on Javascript

javascript - AngularJS:Ng-repeat in groups of n elements

javascript - 我如何确保该字段不只填充空白?