2013-05-28 18 views
0

我的控制器具有以下呼叫正在添加到客戶端防止我的命令對象的JSON從一開始讓我的UsersCommand對象的JSON期間後在

@ModelAttribute("commandObject") 
public UsersCommand getCommand(HttpServletRequest req) throws Exception { 
    ... 
    return command; 
} 


@RequestMapping(value = {"addusers.json"}, method = RequestMethod.GET) 
public void handleGet() { 
     //empty method 
} 

@RequestMapping(value = {"addusers.json"}, method = RequestMethod.POST) 
public void handlePost(@ModelAttribute("commandObject") UsersCommand command, HttpServletRequest req) throws Exception { 
    //do stuff 
} 

,我做一個帖子但是之後,我得到我不需要的命令對象的json,因爲我想做一個消防和忘記帖子。

如何避免json對象在發佈期間回到瀏覽器?

+0

嗨,你能詳細說明這個映射 只是好奇這個映射如何工作。我意識到價值=「/路徑」。 (value = {「addusers.json」}意思是什麼 – user1889970

+0

我無法弄清楚你的代碼是幹什麼的,我想不出你的get方法是怎麼做的。 body? –

+0

@ steve.hanson:get方法沒有任何實現,我仍然是一個noobie,並且學習了spring的微妙複雜性,不確定'handleGet'的作用,看起來好像它可能什麼都不做。確定當我通過ajax調用從jsp頁面調用我的控制器時,如何調用getCommand'。ajax調用只調用我的控制器爲'http:// mylocalhost/addusers.json' – user1361914

回答

0

看起來你只想用GET方法返回JSON。爲此,請全部刪除@ModelAttribute方法。這告訴Spring將控制器中每個處理程序的返回對象添加到您的模型中,這是您不需要的。然後修改您的GET處理程序是這樣的:

@RequestMapping(value = {"addusers.json"}, method = RequestMethod.GET) 
@ResponseBody 
public UserCommand handleGet() { 
    UserCommand cmd = getUserCommand(); 
    return cmd; 
} 

@ResponseBody註解告訴Spring返回類型序列化到JSON(或XML,如果你有JAXB註解類,並根據要求接受頭)。爲此,您還需要將Jackson添加到類路徑中,並確保分別在您的XML或Java配置中使用<mvc:annotation-driven />@EnableWebMvc

這聽起來像自我推銷,但我寫了一篇關於此的帖子,如果你想要更多的細節:http://codetutr.com/2013/04/09/spring-mvc-easy-rest-based-json-services-with-responsebody/

希望有幫助!讓我知道我是否可以爲你增加更多的清晰度。

+0

在fiddler中,我看到了響應xml選項卡而不是json選項卡 – user1361914

+0

響應和響應狀態頭的內容是什麼?你是否得到「200 OK」,並且是json對象回來? –

+0

我確實得到了200.不要得到json back.content -type是'application/xml' – user1361914