我有基于 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/