問題
- Liferay は、特に Web コンテンツ テンプレートが Web コンテンツ構造から存在しない値を参照する場合に、UI で Freemarker テンプレート エラーをレンダリングします。 これにより、管理者以外のユーザーがサイトにアクセスする際に、混乱やマイナスのユーザー エクスペリエンスが生じる可能性があります。
Environment
- ライフレイ DXP 7.0 - 7.3
解決策
Freemarker テンプレートを作成するときは、https://freemarker.apache.org/docs/ref_directive_attempt.html で説明されいるように、試行ブロックと回復ブロックを実装します。 これにより、テンプレート変数が存在しない場合に、ユーザー フレンドリーなエラーを UI に表示できます。 以下に例を示します。
Test Content:
<#attempt>
Company Name: ${companyName}
<#recover>
Unable to retrieve Company Name.
</#attempt>
companyName 変数が存在しない場合 (またはその場所で他のエラーが発生した場合)、出力は次のようになります。
テスト コンテンツ:
会社名を取得できません。
companyName 変数が存在し、その値が Liferayの場合、出力は次のようになります。
テスト内容:
追加情報
Freemarker テンプレートをブラウザ コンソールまたは Liferay ログのみに表示し、よりユーザー フレンドリーなエラー メッセージを代わりに UI に表示する機能リクエスト チケットが作成されました。 詳細については、 LPS-119835 を参照してください。