GVKun编程网logo

从Spring MVC Controller返回JSON或View(springmvc怎么返回json)

13

在这里,我们将给大家分享关于从SpringMVCController返回JSON或View的知识,让您更了解springmvc怎么返回json的本质,同时也会涉及到如何更有效地ajax请求spring

在这里,我们将给大家分享关于从Spring MVC Controller返回JSON或View的知识,让您更了解springmvc怎么返回json的本质,同时也会涉及到如何更有效地ajax请求spring mvc Controller返回的json中的引号被转义、asp.net-mvc – 从扩展Apicontroller的MVC控制器返回Json、asp.net-mvc – 如何从MVC WEB API Controller返回JSON、ios5 – self.presentingViewController返回UITabBarController,而不是ViewModalViewController的视图控制器的内容。

本文目录一览:

从Spring MVC Controller返回JSON或View(springmvc怎么返回json)

从Spring MVC Controller返回JSON或View(springmvc怎么返回json)

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

答案1

小编典典

我通过以下方法实现了这一目标。

@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) {                    }                });

ajax请求spring mvc Controller返回的json中的引号被转义

ajax请求spring mvc Controller返回的json中的引号被转义

UserShowDto showDto = new UserShowDto(show);
//JSONObject json = JSONObject.fromObject(showDto);
map.put("status", SystemConstants.SYSTEM_SUCCESS);
//JSONObject jo = new JSONObject();
//jo.put("name","mical");
map.put("showDto", showDto);
System.out.println(map);
//String str = "''hello''";
//System.out.println(json);
return map;

success : function (result){
var str = JSON.stringify(result);
lert(str);



asp.net-mvc – 从扩展Apicontroller的MVC控制器返回Json

asp.net-mvc – 从扩展Apicontroller的MVC控制器返回Json

我正在尝试从WebAPI应用程序中的MVC控制器返回一个Json字符串,但是我无法使用返回Json(…因为正在使用的类扩展了ApiController而不是Controller(我相信).

有没有其他方法来做我正在尝试做的事情(例如,返回不同的类型)?还是一个解决方法?

这是我的控制器代码:

public class SocialController : ApiController 
{
    public ActionResult Get(SocialRequest request) // or JsonResult?
    {
        JavaScriptSerializer js = new JavaScriptSerializer();
        string jsontest = js.Serialize(request); // just serializing back and forth for testing

        return Json(jsontest,JsonRequestBehavior.AllowGet);
    }
}

我收到的错误是“System.Web.Helpers.Json是一个类型,但像变量一样使用.”

我已经找到了以下相关的SO问题,但它并没有为我解决,如果有人可以详细说明我真的很感激它(并提出了重复点):
Why Json() Function is unknown

解决方法

在Asp.net Web Api中,您不再拥有ActionResults.您只需返回所需的对象即可.框架将对象转换为正确的响应(json,xml或其他类型)
[HttpGet]
public IEnumerable<string> GetUsers(SocialRequest request)
{
    return _applicationsService.GetUseRSS(request);
}

asp.net-mvc – 如何从MVC WEB API Controller返回JSON

asp.net-mvc – 如何从MVC WEB API Controller返回JSON

据我所知,WEB API使用Accept-Content-Type的内容协商来返回json或xml.
这还不够好,我需要能够务实地决定是否要返回json或xml.

互联网充斥着使用HttpResponseMessage< T>的过时示例,其在MVC 4中不再存在.

tokenResponse response = new tokenResponse();
response.something = "gfhgfh";

    if(json)
    {
        return Request.CreateResponse(HttpStatusCode.OK,response,"application/json");
    }
    else
    {
         return Request.CreateResponse(HttpStatusCode.OK,"application/xml");
    }

如何更改上述代码以使其有效?

解决方法

试试这样:
public HttpResponseMessage Get()
{
    tokenResponse response = new tokenResponse();
    response.something = "gfhgfh";

    if(json)
    {
        return Request.CreateResponse(HttpStatusCode.OK,Configuration.Formatters.JsonFormatter);
    }
    else
    {
         return Request.CreateResponse(HttpStatusCode.OK,Configuration.Formatters.XmlFormatter);
    }    
}

或者甚至更好,为了避免使用这种管道基础设施代码使控制器混乱,您还可以编写自定义媒体格式化程序并在其中执行此测试.

ios5 – self.presentingViewController返回UITabBarController,而不是ViewModalViewController的视图控制器

ios5 – self.presentingViewController返回UITabBarController,而不是ViewModalViewController的视图控制器

我有一个基于标签的应用程序.其中一个意见是推动模态视图控制器.如果我在模态视图控制器中调用self.presentingViewController,它返回标签栏控制器,而不是正在推送它的视图控制器.

我在这里缺少什么?有一种可靠的方式来返回视图控制器提高模态吗?

谢谢.

解决方法

这是iPhone应用程式吗?如果是这样,那就解释了混乱.在iPhone上,唯一的演示风格是UIModalPresentationFullScreen – 相当于说在iPhone上,根视图控制器总是呈现视图控制器.那么在Tabbar界面中,UITabBarController的视图就是根视图控制器.

您会注意到,在iPhone上,模态视图不会取代您的视图控制器的视图;它代替整个界面,这意味着它将替换标签栏控制器的视图.这是因为标签栏控制器真的是呈现视图控制器.

我猜,你真的不应该将presentViewController:或presentModalViewController发送到由选项卡控制器包含的视图控制器.您应该将其发送到标签栏控制器.因此,该消息将路由到您的标签栏控制器.

所以没有什么有趣的事情将会发生与presentViewController的价值,除非你在iPad上.在iPad上,您可以使模态视图替换视图控制器的视图.为此,模态视图的modalPresentationStyle必须是UIModalPresentationCurrentContext.在这种情况下,它的presentationViewController实际上可以是“推动模态视图控制器”的视图.

我们今天的关于从Spring MVC Controller返回JSON或Viewspringmvc怎么返回json的分享就到这里,谢谢您的阅读,如果想了解更多关于ajax请求spring mvc Controller返回的json中的引号被转义、asp.net-mvc – 从扩展Apicontroller的MVC控制器返回Json、asp.net-mvc – 如何从MVC WEB API Controller返回JSON、ios5 – self.presentingViewController返回UITabBarController,而不是ViewModalViewController的视图控制器的相关信息,可以在本站进行搜索。

本文标签: