2016-05-30 32 views
0

直到現在發送ajax請求時,在我們的控制器中,我們確實返回了JsonMessage並在客戶端裝飾數據。但是最近我們正在使用第三方的UI框架,它接受了可以使用HTML作爲Ajax回調的準備。Java Spring通過模板創建響應

有沒有辦法做到這一點,而不是所有的HTML標記到控制器?像一個後處理器,它接受json和一個模板,呈現它然後發送給客戶端?

注意:響應採用JSON格式,其中包含一個包含該html的屬性。

我們使用springframework 4.2.6。

+0

只是處理它像這樣http://stackoverflow.com/questions/22422411/how-to-manually-render-spring-mvc-view-to-html –

回答

0

一般你需要在控制器中添加一些方法,返回ModelAndView對象。

此外,您還需要配置ViewResolver並在ModelAndView對象中設置視圖名稱和對應的模型。 像這樣

@Controller 
public class DefaultController { 
    @RequestMapping(value = "/html", produces = "application/json") 
    public ModelAndView getUserHtml(HttpServletResponse response) throws Exception { 
    response.setContentType("application/json"); 
    return new ModelAndView("user", Collections.singletonMap("user", this.user)); 
    } 
} 

,你會看到響應這樣

{ 
    "response": "<div><h1>Java Spring creating response from template</h1><h2>User</h2><p>username: superuser</p><p>password: secret</p><p>email: [email protected]</p></div></html>" 
} 

工作示例項目:https://github.com/sandarkin/so-q37526576

+0

我試過這個,謝謝,但是這樣會返回html,而不是包含該html的json:\ –

+0

OK。我已經通過強制設置內容類型來調整示例項目。現在http:// localhost:8080/default/html將返回正確的內容類型的json。 –