【问题标题】:How to return a json respone or redirect to other view depending on the condition?如何根据条件返回 json 响应或重定向到另一个视图?
【发布时间】:2013-07-22 05:18:00
【问题描述】:

我有一个搜索条件,这取决于我得到列表的结果。 如果列表只包含 1 个数据,那么我想返回该特定数据的编辑视图。如果列表包含超过 1 个数据,我想返回 jsonResponse 以显示数据表。

我试过了,但我没有得到数据表也没有得到视图

if(reservationGridDataPage.getSize() > 1){
    GridJSONResponse jsonResponse = ReservationGridHelper.prepareResponse(reservationGridDataPage);
    jsonResponse.setiTotalDisplayRecords(gridManager.getTotalSearchedReservations(pageRequest, null, entityStateCode, searchParams));
    jsonResponse.setsEcho(sEcho);
    return jsonResponse;
}else{
    Long entityKey = null;
    List<ReservationGridData> content = reservationGridDataPage.getContent();
    for (ReservationGridData t : content) {
        entityKey = t.getId();
    }

    RedirectView redirectView = new RedirectView("/xxx/editRes?id="+entityKey);
    return new ModelAndView(redirectView);
}

【问题讨论】:

  • 方法的返回值是多少?它不会起作用,因为在 if 块中你返回 GridJSONResponse 而在 else 块中你返回 ModelAndView 除非 GridJSONResponseModelAndview 的子类,这在上下文中是不正确的。

标签: java spring return return-type


【解决方案1】:

只需返回类型为String 的视图名称。然后,如果 reservationGridDataPage.getSize() &gt; 1 返回 true,则重定向到控制器的另一个用 @ResponseBody 注释的方法,该方法将返回您的 json 对象。

@RequestMapping(value = "//... your mapping blah blah ...", method = RequestMethod.POST)
public String method1(){
    if(reservationGridDataPage.getSize() > 1){
        return "redirect:/json-response.do";
    }else{
        Long entityKey = null;
        List<ReservationGridData> content = reservationGridDataPage.getContent();
        for (ReservationGridData t : content) {
            entityKey = t.getId();
        }

        //...
        //some other codes

        return "the-name-of-my-edit-view";
    }
}

@RequestMapping(value = "/json-response.do", method = RequestMethod.GET)
public @ResponseBody GridJSONResponse jsonResponseController(){
    //... some other codes
    GridJSONResponse jsonResponse = ReservationGridHelper.prepareResponse(reservationGridDataPage);
    jsonResponse.setiTotalDisplayRecords(gridManager.getTotalSearchedReservations(pageRequest, null, entityStateCode, searchParams));
    jsonResponse.setsEcho(sEcho);
    //...

    return GridJSONResponse;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-30
    • 2021-08-04
    • 2011-09-04
    • 1970-01-01
    相关资源
    最近更新 更多