2014-09-13 75 views
0

我正在使用Spring-MVC並通過ajax發佈數據到控制器,根據控制器的業務邏輯,我返回不同的視圖。 我被卡住的地方是,我想區分控制器在jQuery中返回的是什麼樣的視圖,因爲我們無法訪問jQuery中的服務器對象,所以這是創建問題。下面是我的控制器和jquery的代碼,下面是 。在jquery/javascript中訪問httpservletRequest屬性

控制器 -

@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

你不能從JavaScript訪問您的HttpServletRequest -

之後,該字段使用如jQuery簡單訪問。如果你想從那裏訪問任何數據,你必須將其添加到響應中。 – 2014-09-13 19:38:00

回答

0

一些知識做了一個絕招來區分通過在控制器端將if part中的唯一對象設置爲請求屬性並將其用於通過ajax返回數據的jsp(作爲隱藏字段)的視圖。

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數據作爲響應,用戶解決方案運行良好......但是我們必然會從控制器返回視圖,因爲我們在項目體系結構中使用視圖進行查看,並且無法對其進行更改。 – 2014-09-22 07:33:23