gpt4 book ai didi

json - 从 Spring MVC Controller 返回 JSON 或 View

转载 作者:IT老高 更新时间:2023-10-28 13:52:37 24 4
gpt4 key购买 nike

我想根据逻辑从 Spring MVC Controller 返回一个 View 。如果发生错误,我想返回 JSON,如果没有,则返回 HTML View 。这就像 ASP.NET MVC ActionResult,您可以在其中返回任何类型的 View ,它将呈现结果,并且不依赖于请求中发送的内容类型。我找不到任何这样的例子。

最佳答案

我通过以下方式实现了这一点。

@RequestMapping(value="/users", method=RequestMethod.POST)
public Object index(@RequestBody SearchUsersViewModel model, HttpServletResponse response) {

model.setList(userService.getUsers(model));

if(true)
{
return new ModelAndView("controls/tables/users", "model", model);
}
else
{
return JsonView.Render(model, response);
}
}

JsonView.java

public class JsonView {

public static ModelAndView Render(Object model, HttpServletResponse response)
{
MappingJacksonHttpMessageConverter jsonConverter = new MappingJacksonHttpMessageConverter();

MediaType jsonMimeType = MediaType.APPLICATION_JSON;


try {
jsonConverter.write(model, jsonMimeType, new ServletServerHttpResponse(response));
} catch (HttpMessageNotWritableException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

return null;
}
}

调用的JS函数

config.request = $
.ajax({
url : url,
data : $.toJSON(def.data),
type : def.type,
dataType : def.dataType,
processData : true,
contentType : def.contentType,
success : function(data) {

try {
var json = data;
if (typeof data === "String" || typeof data == "string") {
json = (eval('(' + data + ')'));
}
if ('object' === typeof json) {
if (json.Validation && json.Validation.Errors.length > 0) {

$.each(json.Validation.Errors, function() {
// Error Code Check
});

// Error Callback
if (typeof (def.errorCallback) == 'function') {
def.errorCallback(json);
}
} else {
def.callback(data);
}
} else {
def.callback(data);
}
} catch (e) {
def.callback(data);
// Hide Loading
}
},
error : function(data) {


}
});

关于json - 从 Spring MVC Controller 返回 JSON 或 View,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4917329/

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