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

Expandosでカスタムフィールドにアクセスする

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

サンプルプロジェクトを参照する

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

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

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

次に、以下の手順に従います。

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

  2. 項目タイプとして、[Input Field]を選択します。 項目名として [f5a3Text] を入力します。 [test]のように、[starting value]を入力します。 [保存]をクリックします。

    ユーザーに[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コンテナコンソールでデプロイを確認します。

    STARTED 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オブジェクトはExpandoBridgeサービスを継承しており、カスタムフィールドの値を作成(つまりaddAttribute())、設定(つまりsetAttribute())、取得(つまりgetAttribute())する方法が含まれています。 すべてのインターフェースのメソッドを確認するには、 ExpandoBridge javadocs を参照してください。

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

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

<liferay-theme:defineObjects />

<h4>F5A3 Portlet</h4>

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

F5A3 Text: <%= expandoBridge.getAttribute("f5a3Text") %>

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