直到現在發送ajax請求時,在我們的控制器中,我們確實返回了JsonMessage並在客戶端裝飾數據。但是最近我們正在使用第三方的UI框架,它接受了可以使用HTML作爲Ajax回調的準備。Java Spring通過模板創建響應
有沒有辦法做到這一點,而不是所有的HTML標記到控制器?像一個後處理器,它接受json和一個模板,呈現它然後發送給客戶端?
注意:響應採用JSON格式,其中包含一個包含該html的屬性。
我們使用springframework 4.2.6。
直到現在發送ajax請求時,在我們的控制器中,我們確實返回了JsonMessage並在客戶端裝飾數據。但是最近我們正在使用第三方的UI框架,它接受了可以使用HTML作爲Ajax回調的準備。Java Spring通過模板創建響應
有沒有辦法做到這一點,而不是所有的HTML標記到控制器?像一個後處理器,它接受json和一個模板,呈現它然後發送給客戶端?
注意:響應採用JSON格式,其中包含一個包含該html的屬性。
我們使用springframework 4.2.6。
一般你需要在控制器中添加一些方法,返回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>"
}
我試過這個,謝謝,但是這樣會返回html,而不是包含該html的json:\ –
OK。我已經通過強制設置內容類型來調整示例項目。現在http:// localhost:8080/default/html將返回正確的內容類型的json。 –
只是處理它像這樣http://stackoverflow.com/questions/22422411/how-to-manually-render-spring-mvc-view-to-html –