2011-01-06 107 views
2

我試圖在控制器中重新使用一些控制器,這些控制器向客戶端返回一個json響應。我想返回類似以下格式的JSON響應:使用Spring MVC和Apache Tiles將字符串渲染爲字符串

{ 
'success': <true or false>, 
'response': <the contents of an apache tile> 
} 

在我的控制,我想執行類似這樣的僞邏輯:

boolean valid = validator.validate(modelObj) 
String response = "" 
if(valid){ 
    response = successView.render() // im looking for a way to actually accomplish   
            // this, where the successView is the apache tiles view. 
            // I would also need to pass a model map to the view somehow. 
}else{ 
    response = errorView.render() 
} 
writeJsonResponse(httpResponse, /* a Map whose json representation looks like the one I described above. */) 
+0

我認爲在json中發送html代碼不是一個好主意。如果您只想知道請求是否成功,您可以查看響應狀態代碼(並將其更改爲服務器中的任何值),並像往常一樣從服務器發送視圖。 – Javi 2011-01-06 19:11:10

回答

0

我相信要實現視圖類將jsp的輸出封裝在json中。有問題的班級可能是org.springframework.web.servlet.view.tiles2.TilesView

另一個選項可能是擴展JSON轉換器。 org.springframework.http.converter.json.MappingJacksonHttpMessageConverter

0

如果你需要渲染使用Apache的瓷磚2視圖,您必須使用

org.springframework.web.servlet.view.tiles2.TilesViewResolver 

見實例教程這裏:http://krams915.blogspot.com/2010/12/spring-mvc-3-tiles-2-integration.html

如果您需要渲染的響應,JSON,你可以使用@ResponseBody這需要Jackson在你的classpath中。看到這裏的例子http://krams915.blogspot.com/2011/01/spring-mvc-3-and-jquery-integration.html(控制器返回JSON)。你也可以看到一個類似的例子@ResponseBody http://krams915.blogspot.com/2010/12/jqgrid-and-spring-3-mvc-integration.html