ポートレット A 内の最初のビューとポートレット B 内の 2 番目のビュー (同じ .war 内の両方のポートレット) の 2 つのビューを通信しようとしています。そのために、JSF の「f:viewParam」機能と「f:param」機能を使用して、(ポートレット A ビューから) プロパティをリクエスト オブジェクトに注入することにしました。リクエスト オブジェクトから取得し、そのプロパティ値をビュー スコープのバッキング Bean プロパティに渡します。
Portlet-A ビュー コード:
<p:dataScroller value="#{searchManager.List}" var="ccp" >
...
<p:link value="#{ccp.title}" onclick="myonClick(event)" >
<f:param name="id" value="#{ccp.id}" />
</p:link>
...
</p:dataScroller>
JS コード:
function myonClick(event) {
event.preventDefault();
window.open("viewer", "_blank");
}
ポートレット B のビューは、ポートレット A のビューが表示されるページとは異なる、Liferay ベースのページに表示する必要があることに注意してください。
ポートレット B ビュー コード:
<f:metadata>
<f:viewParam name="id" value="#{resultItemManager.id}" />
</f:metadata>
<h:head />
<h:body>
<p>Details:</p>
<h:outputText value="#{resultItemManager.id}" />
</h:body>
portlet-B が表示されると、ブラウザーのアドレス フィールドは「http://host:8080/viewer」に設定され、タグは「0」(ゼロ) としてレンダリングされます。
目標とするタスクを実行している方法が正しいかどうかはわかりません。しかし、もしそうなら、なぜそれが機能しないのかわかりません。ですから、助けやコメントをいただければ幸いです。前もって感謝します。