我有一个搜索条件,这取决于我得到列表的结果。 如果列表仅包含 1 个数据,那么我想返回到该特定数据的编辑 View 。如果列表包含超过 1 个数据,我想返回 jsonResponse 以显示数据表。
我试过了,但是我没有得到数据表,也没有得到 View
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);
}
最佳答案
只返回类型为String
的 View 名称。然后,如果 reservationGridDataPage.getSize() > 1
返回 true,则重定向到使用 @ResponseBody
注释的 Controller 的另一个方法,它将返回您的 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;
}
关于java - 如何根据条件返回 json 响应并重定向到其他 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17780399/