legacy-knowledge-base
公開されました Sep. 10, 2025

ウェブコンテンツのテンプレートでユーザー入力フィールドの値を表示できない

written-by

Dia Seung

How To articles are not official guidelines or officially supported documentation. They are community-contributed content and may not always reflect the latest updates to Liferay DXP. We welcome your feedback to improve How To articles!

While we make every effort to ensure this Knowledge Base is accurate, it may not always reflect the most recent updates or official guidelines.We appreciate your understanding and encourage you to reach out with any feedback or concerns.

legacy-article

learn-legacy-article-disclaimer-text

問題

  • Webコンテンツテンプレートで getData を使用した場合(下記のコード例を参照)、ユーザー入力フィールドの値ではなく、フィールド参照が表示されます。 (出力されます:ユーザー入力値「テストオプション」の代わりに 'Option92682299' が表示される)
    <#if (field1.getData())??>
    ${field1.getData()}
    </#if>
  • データベースからddmstructureversionテーブルに問い合わせた場合(下記のスクリプト例を参照)、値と参照値が同じになる。
    SELECT definition
    FROM `{database_name}`.`ddmstructureversion`
    WHERE structureID='xxxxx';

Environment

  • dxp 7.0, 7.1, 7.2, 7.3, 7.4

解決策

  • ddmstructureversionを照会する際に、Field ValueがField Referenceと一致することは、現在期待されている動作と一致します。これは、Field Valueを保存することで、ユニークで、最初はField Referenceと同じ値を持つことになります。 しかし、ユーザーがField ReferenceとLabelの値を変更できるのに対し、Field Valueは不変であるため、その値がデータベースに保存される。 これは、「Field Reference」や「Label」が変わっても、フィールドを見つけることができるようにするためです。
  • このデータ保存の意図的な変更により、テンプレートでラベルを呼び出す方法を更新する必要があります。1つの方法として、 getOptionsMapを使用することが考えられます。
  • getOptionsMap を利用して、ユーザーが選択した Value を正しく呼び出す例を以下に示します:
    <#if (field1.getData())??>
    ${field1.getOptionsMap()[field1.getData()]}
    </#if>

追加情報

did-this-article-resolve-your-issue

legacy-knowledge-base