2013-07-04 31 views
3

我使用Spring 3.x作爲我的MVC應用程序而沒有註釋。我想只獲取數據而不是查看。我谷歌它,發現它可以使用@ResponseBody。但我不想使用註釋。我怎麼能告訴春天它只是數據而不是沒有註解的視圖。我的示例代碼如下。如何從沒有註釋的彈簧控制器獲取數據

public class ShowGraphController extends AbstractController { 

    private JdbcUserDao userDao; 

    public void setUserDao(JdbcUserDao userDao) { 
     this.userDao = userDao; 
    } 

    protected ModelAndView handleRequestInternal(HttpServletRequest request,HttpServletResponse responce) throws Exception {{ 
     return new ModelAndView("want it retun as a data not a view name only"); 
    } 
} 
+0

爲什麼你不希望使用註解? – NimChimpsky

+0

我也想知道這個問題的答案。也許是一個很好的教程的鏈接 –

+0

你的Controller如何被定義爲一個控制器,你的方法映射到什麼請求映射? – NimChimpsky

回答

1

我假設你是指JSON,當你說數據?

如果您必須使用ModelAndView風格,請自行處理HttpServletResponse並返回null

+0

是的,你是對的。其JSON數據。 – krish

+0

使用Jackson的'ObjectMapper.writeValue'和'HttpServletResponse.getPrintWriter()' –

1

它是有點令人費解與彈簧3,您應使用ResponseBody註解。看看這個類ResponseEntity,這可能對你的目的有用。來自Spring doc的示例代碼:

@RequestMapping("/handle") 
public ResponseEntity<String> handle() { 
    HttpHeaders responseHeaders = new HttpHeaders(); 
    responseHeaders.set("MyResponseHeader", "MyValue"); 
    return new 
    ResponseEntity<String>("Hello World", responseHeaders, HttpStatus.CREATED); 
} 
1

最簡單的方法是使用@ResponseBody,但如果你不想使用註釋,你可以自己填入響應:

protected void handleRequestInternal(HttpServletRequest request,HttpServletResponse response) throws Exception { 
    response.getWriter().println("want it retun as a data not a view name only"); 
} 
相關問題