antwortet auf HTTP-Anfrage mit JSON-Objekt im Portlet

8

Ich bin ein Anfänger in der Liferay-Portlet-Entwicklung und entwickle ein Portlet, das eine http-get-Anfrage erhält, einige Informationen verarbeitet und dann ein json-Objekt zurückgibt. Mein Problem ist, dass mein Portlet eine ganze HTML-Seite anstatt nur das JSON-Objekt sendet. Das ist mein Code:

%Vor%

Ich führe dies in der doView () Methode aus Ich weiß, dass dies nicht die beste Methode ist, aber im Moment mache ich mir darüber keine Gedanken. 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.

    
layser 11.07.2013, 11:26
quelle

1 Antwort

13

Nun, eine Sache zu bemerken, dass das doView() hauptsächlich für das Rendern Ihres Portlets verantwortlich ist. Ihre Anforderung kann durch
besser erreicht werden 1 - processAction (Portlet-Aktion) oder
2 - serveResource (Portlet AJAX-Dienst).

Aus meiner Sicht ist AJAX-Anfrage-Antwort der geeignetste Fall; Dazu müssen Sie lediglich eine Ressourcen-URL in Ihrer Portlet-Ansicht erstellen. Wie:

%Vor%

Fügen Sie der Seite eine JavaScript-Methode hinzu, mit der Sie eine AJAX-Anforderung für Ihr Portlet generieren können. Die Methode sieht ungefähr so ​​aus,

%Vor%

Rufen Sie diese ajax-Methode für eine Schaltfläche / einen Link auf click auf:

%Vor%

Und schließlich fügen Sie in der Action-Listener-Klasse Ihres Portlets die folgende serveResource -Methode hinzu, die für die Verarbeitung von AJAX-basierten Anfragen zuständig ist.

Hier können Sie Ihre Anfrageparameter erhalten und eine Antwort in dem von Ihnen gewünschten Sinne generieren:

%Vor%

Das ist es! Hoffe, das ist hilfreich für Sie:)

    
Parkash Kumar 11.07.2013, 12:54
quelle

Tags und Links