ショートバージョン
カスタム Web コンテンツ構造を定義しました。ここで、カスタム ポートレットの JSP ベースのビュー内の構造によって定義されたフィールドの 1 つだけにアクセスして出力したいと考えています。
完全にサーバー側で、理想的には完全に JSP 内で実行されるものを探しています (つまり、カスタム コントローラー ロジックや Javascript はありません)。少量のサーブレット コードおよび/または奇妙な JSTL は問題ありません。
より長いバージョン
ユーザー データを表示するカスタム ポートレットを作成しています。特定のユーザーに表示するデータがない場合は、代わりに静的コンテンツを表示したいと思います。実際には、通常のデータ表示ではなく、いくつかの静的コンテンツの 1 つを表示したい特別なシナリオがいくつかあります。
メンテナンスを容易にするために、これらの静的コンテンツをポートレット インスタンス構成の一部にしています。また、ポートレットの広範な使用と、これらの静的な部分を 1 か所で管理したいという要望が予想されるため、新しい Web コンテンツ構造を作成して、静的なシナリオごとに個別の名前付き HTML BLOB をキャプチャするつもりです。次に、ポートレット インスタンスは、ID によって Web コンテンツのその部分に依存するように構成されます。その結果、サイト管理者は単一の Web コンテンツを更新できるようになり、サイト全体のすべてのポートレット インスタンスにその変更が自動的に反映されます。
他のポートレットでは、<liferay-ui:journal-article>
タグを使用して、Web コンテンツのコンテンツ全体 (portlet-instance 構成で識別される) を発行しました。たとえば、次のようになります。
<liferay-ui:journal-article
groupId="${_config_templateGroupId}"
articleId="${_config_templateArticleId}"
/>
ただし、この場合、構造体で定義されたフィールドの1 つだけを出力したいと考えています。
公式 wikiは、journal-article タグがオプションのtemplateId
属性を受け入れると述べています。シナリオごとに個別のテンプレートを定義することで、それを機能させることができると思います。各シナリオは、構造から目的のフィールドのみを発行します。ただし、wiki では、templateId
バージョン 6.0.2 より前では無視されていることにも注意してください。私は 6.0 EE を使用しています。サッドフェイス少佐。
利用可能な代替案に興味があります。もちろん、コンテンツ全体を非表示の要素に出力し、Javascript を使用して関連する部分だけをスポットライトに移動することもできますが、フロントエンド開発者として、ベース ドキュメントのプレスクリプトの最小精度に関する私の感性を不快にさせます。
つまり、Javascript または CSS ベースのトリック (別名Smoke-and-mirrors ) はありません。比較的標準的な JSP 内で完全に実装できる 100% サーバーベースのソリューションのみが受け入れられます。
私の願いを叶えてください、ああ偉大で恐ろしいインターネットよ!