2014-09-13 2 views
0

Я использую Spring-MVC и отправляю данные контроллеру через ajax, и в соответствии с бизнес-логикой контроллера я возвращаю другое представление. место, где я застрял, я хочу различать, какой вид возвращается контроллером в jquery, и поскольку мы не можем получить доступ к объектам сервера в jquery, это создает проблему. ниже - код моего контроллера и jquery.Доступ к атрибуту httpservletRequest в jquery/javascript

Контроллер -

@RequestMapping(value = "/mappedUrl", method = RequestMethod.POST) 
public ModelAndView someMethod(User dummyUser, HttpServletRequest request) { 
    //Business logic here, Boolean status is returned according to it 
    if (status) { 
     return new ModelAndView("viewOne"); 
    } else { 
     request.setAttribute("info", "viewTwo"); 
     return new ModelAndView("viewTwo"); 
    } 
} 

Ajax вызов -

function submit(formId, Url) { 
    var value = $("#" + formId).serialize(); 
    $.ajax({ 
     'type' : "POST", 
     'cache' : false, 
     'contentType' : 'application/x-www-form-urlencoded; charset=UTF-8', 
     'async' : false, 
     'url' : Url, 
     'data' : value, 
     'success' : function(data) { 
      //rendering view 
     } 
    }); 
    //NEED to determine here that which view was returned 
} 

Пытались установки атрибута в контроллере и доступа к ней в JQuery, но это не worked.Any Помощь оценили. Благодарю.

+0

вы не можете получить доступ к HttpServletRequest из JavaScript. Если вы хотите получить доступ к любым данным оттуда, вы должны добавить их в ответ. –

ответ

0

Некоторые-как сделал трюк, чтобы различать представление путем установки уникального объекта в качестве атрибута запроса в if part со стороны контроллера и использования его в jsp (в виде скрытого поля), данные которого возвращаются через ajax.

Затем, что поле просто получить доступ с помощью JQuery как -

if ($('#somehiddenElement').text().trim()) { 
// if that request attribute is set then code in this block runs 
} 
0

Вы не можете получить доступ к различным объектам сферы видимости в jQuery или javascript. вы должны вернуть свой ответ как json или xml и использовать свой результат в jquery или javascript. Spring MVC 3 имеет идеальное сочетание с Джексоном API для преобразования объектов в JSON

проверка Следующий пример

package com.mkyong.common.controller; 

import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.PathVariable; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.bind.annotation.ResponseBody; 
import com.mkyong.common.model.Shop; 

@Controller 
@RequestMapping("/kfc/brands") 
public class JSONController { 

@RequestMapping(value="{name}", method = RequestMethod.GET) 
public @ResponseBody Shop getShopInJSON(@PathVariable String name) { 

    Shop shop = new Shop(); 
    shop.setName(name); 
    shop.setStaffName(new String[]{"mkyong1", "mkyong2"}); 

    return shop; 

    } 

} 

проверка подробно пример в следующей ссылке http://www.mkyong.com/spring-mvc/spring-3-mvc-and-json-example/

+0

спасибо за ваш ответ, пользовательское решение работает хорошо, если мы используем данные json в ответ ... но мы обязаны вернуть представление с контроллера, поскольку мы используем плитки для просмотра в нашей архитектуре проекта, и мы не можем его изменить. –

Смежные вопросы