Expando
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、 こちら までご連絡ください。

拡張子を使用してカスタムフィールドにアクセスする

アプリケーションに追加のフィールドが必要な場合は、いつでもサービスモデル定義に追加して、サービスビルダーを再実行することができます。 これにより、データベースのテーブルに新しいカラムが追加されます。 これは有効な方法ですが、面倒な場合もあります。ユーザーを新しいスキーマに移行するためのアップグレードプロセスを作成する必要があるからです。 しかし、LiferayのExpando機能を使えば、データベースを修正することなく、フィールドを追加することができます。 Expandosは、Javaでオブジェクトに追加のプロパティを追加することで機能します。 サンプルプロジェクトでは、ユーザーがカスタムフィールドにアクセスするデモを行っています。

サンプルプロジェクトを参照してください

Liferay DXP の新しいインスタンスを起動するには、以下を実行します。

docker run -it -m 8g -p 8080:8080 liferay/dxp:2026.q1.9-lts

http://localhost:8080 に、メールアドレス test@liferay.com とパスワード test を使用して Liferay にサインインします。 プロンプトが表示されたら、パスワードを learn に変更してください。

次に、以下の手順に従ってください。

  1. コントロール パネルユーザーと組織 に移動します。 管理者ユーザーのオプションアイコン(Options icon)をクリックし、 編集をクリックします。 「一般」タブで、「カスタムフィールド」までスクロールしてください。 をクリックしてを追加します。

  2. フィールドタイプとして、入力フィールド を選択します。 フィールド名として f5a3Text を入力してください。 test のような開始値を入力してください。 をクリックして保存します。

    ユーザー向けにf5a3Textという名前のカスタムフィールドを作成します。

  3. ダウンロードして解凍します Expando にアクセスします

    curl https://resources.learn.liferay.com/examples/liferay-f5a3.zip -O
    
    unzip liferay-f5a3.zip
    
  4. モジュールのルートディレクトリから、ビルドとデプロイを実行します。

    ./gradlew deploy -Ddeploy.docker.container.id=$(docker ps -lq)
    
    注記

    このコマンドは、デプロイされたjarファイルをDockerコンテナの/opt/liferay/osgi/modulesにコピーするのと同じです。

  5. Liferay Dockerコンテナコンソールでデプロイメントを確認してください。

    com.acme.f5a3.web_1.0.0 [1034] を開始しました
    
  6. サンプルモジュールが正しく動作することを確認してください。 ブラウザで https://localhost:8080 を開いてください。

  7. サイトページに移動し、編集アイコン(Edit icon)をクリックします。 ページにF5A3ポートレットを追加します。 このウィジェットは「サンプルウィジェット」の中にあります。

    F5A3ポートレットをサイトページに追加します。

    このポートレットには、先ほど作成したユーザーのカスタムフィールドが表示されます。

ポートレットを調べる

このサンプルプロジェクトでは、シンプルなMVCポートレットを使用して、カスタムフィールドを表示するJSPファイルをレンダリングします。 ポートレットにはコードは含まれておらず、デフォルトのJSPファイルを表示するだけです。

詳細については、 MVC の使用 を参照してください。

JSPファイルを調べます

<liferay-theme:defineObjects> タグは、Liferay User オブジェクトにアクセスするために JSP に含まれています。 多くの Liferay オブジェクトと同様に、 User オブジェクトには、カスタム フィールド値の作成 (つまり、 addAttribute()、設定 (つまり、 setAttribute())、および取得 (つまり、 getAttribute()) 方法を含む継承された ExpandoBridge サービスがあります。 すべてのインターフェースのメソッドについては、 ExpandoBridge の Javadoc を参照してください。

<%@ taglib uri="http://liferay.com/tld/theme" prefix="liferay-theme" %>

<%@ page import="com.liferay.expando.kernel.model.ExpandoBridge" %>

<liferay-theme:defineObjects />

<h4>F5A3 ポートレット</h4>

<%
ExpandoBridge expandoBridge = user.getExpandoBridge();
%>

F5A3 テキスト: <%= expandoBridge.getAttribute("f5a3Text") %>

サンプルプロジェクトは、ユーザーのカスタムフィールド f5a3Text に関連付けられた値を取得する簡単な例を示しています。 アプリケーション内で、カスタムフィールドの作成、設定、取得を行うための独自のコードを記述してください。