有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

javascript我的调用Spring控制器失败

在我的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控制器-->;下载CSV控制器:

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)

怎么了


共 (2) 个答案

  1. # 1 楼答案

    您试图发布数据以获取url。所以换个控制器试试这个

        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.POST)
        public void getCSV(HttpServletRequest request, HttpServletResponse response, @RequestBody ModelMap model) throws IOException{
    
            System.out.println("DEBUT TELECHARGEMENT");
            // SOME LOGIC
            System.out.println("FIN TELECHARGEMENT");
    
        }
    }
    
  2. # 2 楼答案

    更改ajax调用以获得如下方法

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

    或者将spring控制器方法更改为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:如果您的项目有一些根文件夹,并且基于dispatcher servlet url映射,在请求localhost:8080/yourproject/downloadCSV之类的内容时也指定了它的名称