2011-06-30 95 views
1

我需要在我的控制器中手動呈現ModelAndView以便將其放入JSON對象中。如果我將整個ModelAndView對象傳遞給JSON,我會得到「沒有找到類javassistlazyinitializer的序列化程序」異常,因爲jackson無法正常使用LAZY對象。 謝謝手動渲染ModelAndView?

回答

0
public class JSONView implements View { 
    /** 
    * Logger for this class 
    */ 
    private static final Logger logger = Logger.getLogger(JSONView.class); 

    private String contentType = "application/json"; 

    public void render(Map map, HttpServletRequest request, HttpServletResponse response) 
     throws Exception { 
    if(logger.isDebugEnabled()) { 
     logger.debug("render(Map, HttpServletRequest, HttpServletResponse) - start"); 
    } 

    JSONObject jsonObject = new JSONObject(map); 
    PrintWriter writer = response.getWriter(); 
    writer.write(jsonObject.toString()); 

    if(logger.isDebugEnabled()) { 
     logger.debug("render(Map, HttpServletRequest, HttpServletResponse) - end"); 
    } 
    } 

    public String getContentType() { 
    return contentType; 
    } 

} 

ModelAndView returnModelAndView = new ModelAndView(new JSONView(), model);

+0

感謝您的答覆。我發現了另一個ViewResolver - MappingJacksonJsonView。但不能配置它。是說解析器不在應用程序上下文中運行,但我將它添加到配置文件中。有任何想法嗎?謝謝 – nKognito

+0

問題是,懶惰集合失敗。所以我試圖找到手動視圖渲染的任何解決方案。然後,我把它作爲字符串將它放入JSON對象 – nKognito

+0

你試過我的例子嗎? – hossaindoula