2013-09-23 87 views
2

我有一個通過ajax發送給控制器的窗體。在該控制器中,輸入被驗證,並返回一個json對象。如何將Spring MVC視圖渲染爲字符串

如果有錯誤,我返回該值爲「FAIL」的json對象中的一個屬性(字符串),以便我可以在客戶端分析它。

我想要做的是呈現一個視圖,並將其作爲字符串屬性放在該json對象中,以便當沒有錯誤(SUCCESS)時,我可以使用該html中的div設置div呈現的視圖。

我該怎麼做?

有沒有更好的方法呢?

+0

請添加你試過的代碼 –

+0

我沒有代碼..我有代碼,我做驗證和JavaScript代碼來分析json retun對象。這是工作...我需要的是如何呈現視圖並返回呈現的視圖的HTML內的字符串的一些信息... – RLuceac

+0

取決於您使用的視圖技術。如果您使用Velocity之類的東西,您可以將模板讀入字符串。 – Bart

回答

4

做到了!

這裏是我的解決方案:

我用thymeleaf這樣我就可以呈現在我的控制器的頁面。

我使用不同的信息,我在網上找到的一些地方..不remembet他們所有,所以感謝和抱歉,不把這裏的鏈​​接....

首先,我通過AJAX發送表單數據控制器。在控制器中,我創建一個對象並將狀態字段設置爲FAIL的SUCCESS,如果失敗,我將返回在我的對象上設置錯誤信息,如果成功,我將字段設置爲我的頁面響應的HTML。所以我把這個對象發回客戶端(JSON)並分析這些字段。

貝婁是代碼:

控制器:

@RequestMapping(value = "/calcdireto.json", method = RequestMethod.POST) 
public @ResponseBody CalcDiretoResponse processFormAjaxJson(Model model, 
    @ModelAttribute(value = "formBean") @Valid CalcDiretoFormBean cdBean, 
    BindingResult result) { 
CalcDiretoResponse res = new CalcDiretoResponse(); 
if (!result.hasErrors()) { 
     res.setValStatus("SUCCESS"); 
     final WebContext ctx = new WebContext(request,servletContext,request.getLocale()); 
     res.setHtml(this.templateEngine.process("subpage", ctx));  
     return res; 
} ... 

,並在頁面:

if (response.valStatus == 'SUCCESS') { 
    $("#pp-result").html(response.htm); 
} 

這就是所有!

1

如果您使用的是JSP,那麼您無法使用Spring呈現視圖,因爲Spring並未編譯JSP頁面。根據視圖的長度,解決方案是以手工方式構建您的視圖,如String(簡單HTML無JSP標記)並將其作爲JSON返回。

編輯:在這個Render Spring MVC to String or PDF六必居Kunjummen 看看回答

+0

好的,謝謝..我會嘗試百里香.. – RLuceac

相關問題