java - 我如何使用一个参数作为map进行ajax调用,并在java服务器端将其映射到hashmap

标签 java javascript ajax spring jakarta-ee

我有基于 spring java 的网络应用程序。

在其中一个地方,用户将填写一个表单,我有一段 javascript 代码,它将读取每个字段并进行 ajax 调用。

Spring 现在将其映射到相关函数。到目前为止我都很好。

现在我想减少ajax调用中的参数数量。那么javascript中有没有类似map之类的东西可以让java映射到呢?

这是没有 map 的代码,可以正常工作。

       firstName = $('#firstName').val();
       lastName = $('#lastName ').val();
       address = $('#address ').val();      
        $.ajax({
        type: 'POST',
        url: location.href + 'MyApp/'+currentTabName+'/getResults',
        data: ({firstName:firstName, lastName:lastName, address:address}),
        success:function(data) {
            $('#searchResults').html(data);
        }
    });     

Controller 端java代码:

    @RequestMapping(value = "/Search/getResults", method = RequestMethod.POST)
    public ModelAndView getResults(@RequestParam("ticker") String ticker,
        @RequestParam("searchMap") Object searchMap,
        @RequestParam("dateRange") String dateRange,
        @RequestParam("inMarquee") boolean inMarquee, HttpServletRequest request,
        HttpServletResponse response) {
//code to process the arguments received
}

这对我来说效果很好。

现在我想将所有三个参数放入一个映射中,然后发送到 java 代码:

所以我写了下面的代码:

        var map =[];
        map[ firstName] = $('#firstName').val();
      map[ lastName ]= $('#lastName ').val();
       map[address ]= $('#address ').val();     
        $.ajax({
        type: 'POST',
        url: location.href + 'MyApp/'+currentTabName+'/getResults',
        data: ({map:map}),
        success:function(data) {
            $('#searchResults').html(data);
        }
    });     

Controller 端java代码:

    @RequestMapping(value = "/Search/getResults", method = RequestMethod.POST)
    public ModelAndView getResults(@RequestParam("map") Map<String,String map,
        HttpServletRequest request,
        HttpServletResponse response) {
//code to process the arguments received
}

当我运行我的代码时:我收到以下错误:

 Resolving exception from handler [public org.springframework.web.servlet.ModelAndView com.Controller.getResults(java.util.Map,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)]: org.springframework.web.bind.MissingServletRequestParameterException: Required Map parameter 'map' is not present

我觉得这是所有基于 java 的网络应用程序的基本需求。但我第一次接触这种情况。所以请分享 您输入如何避免此问题的信息。 我想要 map 的原因是字段的数量和字段的组合可能会有所不同。所以我无法为每个组合编写ajax调用。

最佳答案

复制并粘贴您的代码,请勿重新输入。
如果您复制并粘贴了代码,那么它无法正常工作。

   firstName = $('#firstName').val();
   lastName = $('#firstName').val();
   address = $('#firstName').val();     

注意您的姓氏地址来源

关于java - 我如何使用一个参数作为map进行ajax调用,并在java服务器端将其映射到hashmap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13419086/

相关文章:

c# - 启用 URL 重新路由后 Ajax 停止工作

java - Java 8 (1.8) 中 ArrayList<Integer> 不存储用户输入的整数

java - 当包含反斜杠时,从用户输入创建正则表达式模式不起作用

java - 使用 Java 在 Selenium WebDriver 中进行图像比较

javascript - 如何为 iOS 设备构建 JavaScriptCore?

javascript - 使用 Python,从 Javascript 获取 JSON 变量

javascript - 构建 JavaScript 包失败。无法读取 react native 模块 traverseDependencies.js 上未定义的属性 'reduce'

java - 运行 Javafx 应用程序时出错

javascript - 通过ajaxForm插件取消正在进行的文件上传

php - 使用 AJAX 将数据发送到数据库失败