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 に関連付けられた値を取得する簡単な例を示しています。 アプリケーション内で、カスタムフィールドの作成、設定、取得を行うための独自のコードを記述してください。