Mik*_*ynn 17 spring json spring-mvc
我想根据逻辑从Spring MVC Controller返回一个视图.如果发生错误,我想返回JSON,如果没有,则返回HTML视图.这就像ASP.NET MVC ActionResult,您可以在其中返回任何类型的视图,它将呈现结果,并且它不依赖于请求中发送的内容类型.我找不到任何这方面的例子.
Mik*_*ynn 18
我用以下方法实现了这一点.
@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);
}
}
Run Code Online (Sandbox Code Playgroud)
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;
}
}
Run Code Online (Sandbox Code Playgroud)
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) {
}
});
Run Code Online (Sandbox Code Playgroud)
以防万一你想要在异常时返回Json,你可以执行以下操作:
@ExceptionHandler(Exception.class)
@ResponseBody
public void handleIOException(Exception exception,HttpServletRequest request, HttpServletResponse response) {
response.setContentType("application/json");
String json = "{\"Name\": 50}";
PrintWriter out= response.getWriter();
out.write(json);
}
Run Code Online (Sandbox Code Playgroud)
我不确定这是你想要做的,但以防万一.... :)
| 归档时间: |
|
| 查看次数: |
75562 次 |
| 最近记录: |