这个问题是ajax Spring mvc中返回模型和视图的后续
因为唯一的答案是我们需要从控制器返回json,而不是Model AndView。所以问题是
更新1:如前所述,我尝试了示例。这是我的代码。
@Controller
public class AppController
{
@RequestMapping(value="/greeting",method=RequestMethod.POST)
@ResponseBody
public ModelAndView getGreeting(@RequestBody String json) throws IOException
{
JSONObject inputjsonObject = new JSONObject(json);
String name = inputjsonObject.getString("name");
ModelAndView modelAndView = new ModelAndView();
String result = "Hi "+name;
modelAndView.addObject("testdata", result);
modelAndView.addObject("user", getPrincipal());
modelAndView.setViewName("greetingHtmlPage");
return modelAndView;
}
// other stuff
}
在上述控制器方法中,我可以成功地获取数据。这个方法是从home.html上的javascript调用的。下面是javascript函数
function callGreeting(){
var nameData={
name : document.getElementById("name").value
}
var dataInJson = JSON.stringify(nameData);
var csrf_token = document.getElementById("token").value;
$.ajax({
type: 'POST',
url: "greeting",
data: dataInJson,
cache:false,
beforeSend: function(xhr) {
xhr.setRequestHeader('X-CSRF-Token', csrf_token);
xhr.setRequestHeader("Accept", "application/json");
xhr.setRequestHeader("Content-Type", "application/json");
},
success: function (response) {
document.open();
document.write(response);
document.close();
},
error: function (data) {
alert("failed response");
}
}); }
我已成功渲染页面。但即使在加载新页面之后,应用程序的url也不会从AjaxSpringMVC:8080/home更改为AjaxSpring MVC:8080/heeting。如果在不使用Ajax的情况下使用,Spring MVC中会发生这种情况。
如何返回ModelAndView?
您可以像往常一样返回Model AndView:
public ModelAndView returnView( Model model ) {
model.addAttribute( "myStaff", "my staff as string" );
return new ModelAndView( "myView" );
}
页面的呈现方式:
您可以控制它的呈现方式。当您返回<code>ModelAndView</code>时,响应会有一个HTML页面。在Ajax调用之后,您可以执行$(“#container”)。html(response)
或类似的东西,以便在任何地方显示html页面。
换句话说,您从控制器获得了一整页html内容。
然而,我强烈建议您只返回json对象并用json对象更新您的视图。Ajax主要用于通过异步更新视图的一部分来创建良好的用户体验,所以用Ajax获得整个页面对我来说没有意义。
如何在Controller中读取来自ajax的post数据。
有很多方法,我喜欢将json体直接发送到控制器
@ResponseBody
@RequestMapping(value = "/saveObj", method = RequestMethod.POST, consumes = "application/json")
public String saveObj(Model model, @RequestBody MyObj myObj) {
// do staff..
}
我正在尝试将一个jsp表单放入fancybox,我的站点功能正常,所以我知道我的大部分配置都是正确的。我还做了一个图像的样例测试,它工作得很好,但是对于一个表单,我有问题。下面是代码:
本文向大家介绍SpringMvc微信支付回调示例代码,包括了SpringMvc微信支付回调示例代码的使用技巧和注意事项,需要的朋友参考一下 介绍 大家都知道微信支付的回调链接要求不能跟参数,但又要接收返回的xml数据。我开始使用@RequestBody注解在参数上,希望能获取xml数据,测试失败。最后使用HttpServletRequest去获取数据成功了。 示例代码 总结 以上就是这篇文章的全部
龙果开源-后台管理系统 项目介绍 框架完全是基于Spring IO platform,绝对拥抱Spring,版本的依赖关系再不用担心。 前端基于 龙果开源-后台管理UI Roncoo AdminLTE,高端大气上档次。 实现了邮件发送功能,邮件增删改查功能 代码自动生成工具使用了龙果开源-Mybatis代码自动生成工具 项目愿景 根据实际项目的需求,实现一个适合由单应用扩展到多应用的架构。在项目的
我正在通过在线示例学习使用FreeMarker的SpringMVC。我遇到了这个错误,但是我不知道我的getFreemarkerConfig()方法有什么问题,一整天我都在试图修复它,但是没有成功。
我已经获得了我的访问令牌,但我很难看到您然后如何发送所需数据的请求。在示例中,调用Microsoft Graph可以:
我正在编写一个Servlet-Filter,它包装响应并分析对包装响应的addHeader()的调用。在将响应提交给客户机之前,如果合适的话,它会用一些有用的完整头(缓存、压缩等)装饰它。 我能想到的唯一方法是包装请求,捕获对servletRequest.getRequestDispatcher()的调用,并返回一个包装好的RequestDispatcher实例,当调用include-method
问题 你想调用一个对象上的多个方法,但不想每次都引用该对象。 解决方案 在每次链式调用后返回 this(即@)对象 class CoffeeCup constructor: -> @properties= strength: 'medium' cream: false sugar: false
我试图在我的数据库中保存一个json对象。未调用save()函数,但从未保存json对象。帮我解决这个问题。我想这是猫鼬的连接问题。这是我的密码。。 我的控制台日志:: 新增用户api命中!!json的内容是: 143没有userrs: 144 db中的用户计数已更新!!这个人生成的id是:ipkoID_C144调用保存函数obj::{"name":"Abhi","密码":"jio","usern