2012-04-14 11 views
1

Abhängig von einer Bedingung will ich umleiten zu einer JSP-Seite von meiner MVCPortlet Klasse umleiten, nachdem action-url-redirect auf true in liferay-portlet.xml Einstellung habe ich versucht, mit WirkungLiferay 6: Kann nicht JSP von MVCPortlet

Response.sendRedirect() 

und ich habe diesen Fehler in der Server-Konsole:

Set Parameter machen bereits

genannt Dann habe ich versucht mit:

include("/html/satportlet/view2.jsp", request, response); 

keine Ausnahme ausgelöst wird, aber immer noch nichts ist in diesem Fall passiert, und ich weiß nicht, warum.

Eine andere Frage, bin ich richtig in der Annahme, dass in Liferay das Konzept von include und sendRedirect ist das gleiche wie in JSP und Servlets?

Ich bin mit Liferay 6.

Antwort

0

Das Portlet API unterscheidet zwischen der Aktionsphase und der Phase machen: In der Aktionsphase (zB wenn Sie eine actionrequest/ActionResponse verfügbar) Sie nicht über HTML denken sollen Ausgabe.

Während des Renderns entscheiden Sie, was angezeigt werden soll - Sie werden sich also nur an ein Attribut oder einen Renderparameter während der Aktionsbearbeitung erinnern. Beim Rendern werden Sie auf die Ziel-JSP umgeleitet. das nach dem Ende der Aktionsmethode

+1

Danke Olaf Kock, aber was ich lese ist, dass, wenn Sie MVCPortlet verwenden, besteht keine Notwendigkeit, die DoView-Methode zu überschreiben, da dies einer der Vorteile der MVCPortlet ist, lassen Sie mich wissen, wenn ich falsch liege. Danke im Voraus . – Gajjini

2

Keine Notwendigkeit für eine Umleitung hinzufügen:

response.setRenderParameter("jspPage", "/url/to/your/jsp");

Dies verursacht "/url/to/your/jsp" als Antwort auf die Wirkung der Seite zu machen.

In der Tat, das einzige Mal, ich brauche doView außer Kraft zu setzen ist, wenn ich eine benutzerdefinierte Verarbeitung soll, bevor der Eintrag-Punkt Ansicht jsp angezeigt wird (auf das Schreiben von Code in der jsp selbst zu vermeiden, da Liferay nur eine jsp-page/view-template als hat Init-Parameter und keine Controller-Aktion).