gpt4 book ai didi

java - 如何在 Spring 中配置 AJAX/JSON(使用 Jackson)?

转载 作者:太空宇宙 更新时间:2023-11-04 11:46:19 24 4
gpt4 key购买 nike

我已经在 here 上询问过如何使用 Spring MVC 重新加载 JSP 页面的特定部分。 .
我需要使用 AJAX 将一个值传递给我的 Controller ,但这并没有真正起作用。但我可以在没有 JSON 的情况下解决它。

我想要什么?

我希望能够将这个确切的值作为 JSON 字符串传递,因为无论如何我都需要让 JSON 为进一步的功能工作,而且我很好奇为什么它不适合我。

目前我收到错误:415(不支持的媒体类型)

我的代码:

MainController.java

@RestController
public class MainController {
// Delivers the refresh-information for the ajax request, when the detail view gets reloaded
@RequestMapping(value = "/refreshDetail", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.TEXT_HTML_VALUE)
private ModelAndView refreshDetailView(@RequestBody IdObject id, ModelMap model){

DetailViewBean dvb = Dao.getDetailViewData(id.getId());
model.addAttribute("detailSearchResultPerson", SupportMethods.getDetailViewDataRecordsPerson(dvb));
model.addAttribute("detailSearchResultCompany", SupportMethods.getDetailViewDataRecordsCompany(dvb));
/*
getDetailViewDataRecords: Array of single Data Records (Label & Data)
getDetailViewData: Bean with fetched Data from the DB
*/

return new ModelAndView("detailView", model);
}

}

main.js(ajax请求)

$.ajax({
type: "POST",
accept:"text/html",
contentType: "json/application;charset=UTF-8",
dataType: "html",
url: "/refreshDetail",
data: JSON.stringify({"id": id}),
success: function(response) {
$(".containerDetailView").html(response);
}
});

IdObject.java

public class IdObject {
int id;

public IdObject(int id) {
this.id = id;
}

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}
}

WebInit.java

protected Class<?>[] getRootConfigClasses() {
return new Class<?>[]{RootConfig.class};
}

protected Class<?>[] getServletConfigClasses() {
return new Class<?>[]{WebConfig.class};
}

protected String[] getServletMappings() {
return new String[]{"/"};
}

pom.xml

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.6.RELEASE</version>
</dependency>

...

<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.6</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.8.6</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.8.6</version>
</dependency>

我尝试了什么?

我尝试像这样配置WebInit.java:

public void onStartup(ServletContext container) {
// Create the 'root' Spring application context
AnnotationConfigWebApplicationContext rootContext =
new AnnotationConfigWebApplicationContext();
rootContext.register(WebConfig.class);

// Manage the lifecycle of the root application context
container.addListener(new ContextLoaderListener(rootContext));

// Create the dispatcher servlet's Spring application context
AnnotationConfigWebApplicationContext dispatcherContext =
new AnnotationConfigWebApplicationContext();
dispatcherContext.register(RootConfig.class);

// Register and map the dispatcher servlet
ServletRegistration.Dynamic dispatcher =
container.addServlet("dispatcher", new DispatcherServlet(dispatcherContext));
dispatcher.setLoadOnStartup(1);
dispatcher.addMapping("/");
}

但这并没有改变任何事情。

然后我也尝试自己配置 Spring 消息转换器,但这也没有帮助。

我不觉得 AJAX 请求有什么问题,或者我在 Controller 中处理它的方式没有问题,但如果有的话请指出。

如果有人能给我任何关于如何解决这个问题的建议,我将不胜感激(:

最佳答案

你可以尝试这个ajax功能,它与spring兼容

    $.ajax({
url: "/refreshDetail",
method: "POST",
dataType: 'json',
data: JSON.stringify({"id": id}),
success: function (data) {
$(".containerDetailView").html(response);
},
error: function (data) {

}
})

发送 JSON 时,数据类型不应为 html

关于java - 如何在 Spring 中配置 AJAX/JSON(使用 Jackson)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42301727/

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