2つのポートレットがあり、ポートレットAからポートレットBにイベントを送信しようとしています。今問題は、両方のポートレットを同じページに保管すると動作しますが、別のページにそれらを保持すると、PortletBのviewAction.jspページが、ポートレットBのProcessActionメソッドにも関わらず更新されません。 pritingが印刷されるので、コントロールがその部分に来ると思います)。異なるページのポートレットのイベントdoes not reload view.jsp
ポートレットA view.jsp
<portlet:actionURL var="changedb" name="processEvent"/>
<aui:form method="post" action="<%=changedb.toString() %>">
<aui:fieldset>
<aui:select label="Select Bot" id="options" name="botname"
required="true" showEmptyOption="true">
<aui:option value="otion1" name="option1"
>option1</aui:option>
<aui:option value="option2" name="option2"
>option2</aui:option>
</aui:select>
<aui:button type="submit" value="Send"/>
</aui:fieldset>
</aui:form>
Javaメソッド:
@ProcessAction(name="processEvent")
public void process(ActionRequest request, ActionResponse response) {
String bot = ParamUtil.getString(request, "botname","");
String url = "somehttplink" + bot;
System.out.print("control came inside changedbportlet");
System.out.println(url);
QName qName = new QName("botchange");
response.setEvent(qName, url);
}
ポートレットB(受信機)
<portlet:defineObjects />
<%
String url = (String) renderRequest.getParameter("url");
%>
<main class="container">
<div class="row">
<div class="col-lg-12">
<div id="initial-screen">
<iframe class="iframe" src="<%= url %>" width = "1000" height="800"
></iframe>
</div>
</div>
</div>
</main>
Javaメソッド:
@ProcessEvent(qname = "botchange")
public void myEvent(EventRequest request, EventResponse response)
throws javax.portlet.PortletException,
java.io.IOException {
Event event = request.getEvent();
String url = (String) event.getValue();
System.out.println("control came to showpageportlet");
System.out.print(url);
response.setRenderParameter("url", url);
}
私はLiferay 7とosgiモジュールを使用しています。https://web.liferay.com/community/wiki/-/wiki/Main/portlet+to+portlet+communicationの手順に従って、portlet-ext.propertiesファイルの下のコマンドも追加しました。
portlet.event.distribution=layout-set
私は間違っていますか?
PortletAがページ上のすべてのポートレットのレンダリングをトリガーするため、同じページにある場合は機能します。他の場所にPortletBを持っている場合は、evenメソッドだけがトリガーされます。何をアーカイブしようとしていますか? –
フィルタに基づいてiframe urlを変更しようとしていて、両方のポートレットを別のページに配置する必要があります。 –
PortletAを直接変更してPortletBに送信するか、または単に状態を変更したい場合、ユーザーがPortletBに来ると、別のURLが送信されますか? –