我想在成功调用ajax之后重定向到另一个控制器我也想发送一些我在响应中得到的数据
用户控制器
@RequestMapping(method = RequestMethod.POST, value = "/user/preferences")
public @ResponseBody Map<String, List<String>> userPreferences(HttpServletRequest request) {
Map<String , List<String>> finalPlaces = new LinkedHashMap<String, List<String>>();
finalPlaces.put(entry.getKey(), new ArrayList<String>(topPlaces));
return finalPlaces;
}
Ajax Call
$(".savebutton").click(function(){
$.ajax({
url: "<c:url value='/user/preferences' />",
type: 'POST',
data:{
preferences : preferences
},
success: function(response)
{
},
error: function(xhr, ajaxOptions, thrownError) {
alert('Error');
}
});
});
当上述ajax调用成功返回时,我想调用另一个控制器的方法
位置控制器
@RequestMapping(method = RequestMethod.GET, value = "/places")
public ModelAndView showRecommnededPlaces(Map<String, List<String>> recommndedPlaces) {
System.out.print(recommndedPlaces);
ModelAndView model = new ModelAndView("places");
return model;
}
是否可以直接从用户控制器调用places控制器操作?
由于
答案 0 :(得分:0)
是的,您可以在用户控制器中return "redirect:/places";
,例如:
@RequestMapping(method = RequestMethod.POST, value = "/user/preferences")
public @ResponseBody String userPreferences(HttpServletRequest request) {
Map< String, Integer> userPreferences = new HashMap< String, Integer>();
.
.
.
return "redirect:/places";
}
答案 1 :(得分:0)
如果您可以将依赖从一个控制器放到下一个控制器,您实际上可以这样做:
public class UserController {
@Autowired PreferencesController prefController;
@RequestMapping(method = RequestMethod.POST, value = "/user/preferences")
public @ResponseBody Map<String, List<String>> userPreferences(HttpServletRequest request) {
Map<String , List<String>> finalPlaces = new LinkedHashMap<String, List<String>>();
finalPlaces.put(entry.getKey(), new ArrayList<String>(topPlaces));
return prefController. showRecommendedPlaces(finalPlaces);
}
}
不是说这很好 - 因为您必须适当地匹配被叫控制器的响应类型,但仍然是一种方法