Ich bin ein Anfänger in Liferay-Portlet-Entwicklung und ich entwickle ein Portlet, das eine HTTP-Anfrage erhält, einige Informationen verarbeitet und dann ein JSON-Objekt zurückgeben muss. Mein Problem ist, dass mein Portlet eine ganze HTML-Seite anstatt nur das JSON-Objekt sendet. Dies ist mein Code:Antwort auf HTTP-Anfrage mit JSON-Objekt im Portlet
HttpServletResponse servletResponse = PortalUtil.getHttpServletResponse((renderResponse));
servletResponse.setHeader("Content-type", "application/json");
servletResponse.setCharacterEncoding("application/json");
PrintWriter out = servletResponse.getWriter();
out.write(EntityUtils.toString(responseEntity));
out.flush();
out.close();
ich dies in der doView Methode execute() Ich weiß, dass dies nicht die beste Praxis ist, aber ich bin nicht mit, dass zur Zeit besorgt. Kann mir jemand erklären, wie man nur das JSON-Objekt zurückgibt, das ich über serveResponse gelesen habe, aber ich konnte nicht herausfinden, wie man es aufruft.
Ich würde davon abraten, HttpServletRequest oder HttpServletResponse-Klassen in einem Portlet zu verwenden. Es durchbricht das gesamte Portlet-Programmiermodell und begrüßt nur weitere schlechte Praktiken. Siehe die Idee von zerbrochenen Fenstern http://www.codinghorror.com/blog/2005/06/the-broken-window-theory.html –
* Sei * besorgt, dass die Implementierung in "doView" schlecht ist, gerade weil es * funktioniert nicht*. Das ist, was "serveResource" für –