gpt4 book ai didi

java - 如何从spring Controller 接收json响应到jsp页面

转载 作者:行者123 更新时间:2023-12-02 08:40:46 25 4
gpt4 key购买 nike

我创建了一个 JSP 页面,其中包含一些文本字段。单击提交按钮后,它会调用 Ajax 调用将数据发布到 Spring Controller 。现在,将数据保存到数据库后, Controller 会创建一个 JSON 响应。我希望此响应可在 JSP 文件中使用。下面是我的文件的代码...

JSP 文件:

$(document).ready(function(){
$("#submitButton").click(function(e){
var formData = getFormData();
$.ajax({
type: 'POST',
'url': 'http://localhost:8080/Test_ReportingUI/addDb.htm',
data: {jsonData: JSON.stringify(formData)},
dataType: 'json',
success: function(response){
try{
var strResponse=jQuery.parseJSON(response);
}catch(err){}
if(response.status=='ok')
{
alert("details added");
}
else
{
alert("error happened");
}

},
timeout: 10000,
error: function(xhr, status, err){
if(status=='timeout')
{
alert('Request time has been out','');
}
console.log(status,err);
}
});
});
});

Spring Controller 方法:

@Autowired RWCustomerService rwCustomerService;
@RequestMapping (value="addDb.htm", method=RequestMethod.POST)
String addEditCustomer(@RequestParam String jsonData)
{
System.out.println("hello world");
System.out.println("-----------------\n"+jsonData);
ModelAndView modelAndView=new ModelAndView("custDB_setup");
JSONObject jsonResponse = new JSONObject();
try{
JSONObject requestedJSONObject = new JSONObject(jsonData);
String dbName = requestedJSONObject.getString("dbName");
String dbUserName = requestedJSONObject.getString("dbUserName");
String dbPassword = requestedJSONObject.getString("dbPassword");
Iterator it=requestedJSONObject.keys();
while(it.hasNext()){
System.out.println("Oo..: "+it.next());
}
RWReportCustomerDB rwReportCustomerDB = new RWReportCustomerDB();
rwReportCustomerDB.setDbName(dbName);
rwReportCustomerDB.setDbLogin(dbUserName);
rwReportCustomerDB.setDbPassword(dbPassword);
rwCustomerService.saveDb(rwReportCustomerDB);
jsonResponse.put("status", "ok");

}
catch(Exception ex){
ex.printStackTrace();
}
return jsonResponse.toString();
}

数据正在保存在数据库中,因此 json 数据正在到达 Controller 方法。但是,我无法在 jsp 页面上看到警报框,即“已添加详细信息”。我该如何解决这个问题。

最佳答案

您需要添加@ResponseBody注释

@RequestMapping (value="addDb.htm", method=RequestMethod.POST)
@ResponseBody String addEditCustomer(@RequestParam String jsonData)
{...}

您不需要手动编写 JSON,Spring 在后台使用 Jackson 库将对象序列化为 JSON。请参阅Spring 3 MVC and JSON example

Add @ResponseBody as return value. Wen Spring sees

  • Jackson library is existed in the project classpath
  • The mvc:annotation-driven is enabled
  • Return method annotated with @ResponseBody

Spring will handle the JSON conversion automatically.

关于java - 如何从spring Controller 接收json响应到jsp页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35290692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com