legacy-knowledge-base
公開されました Jul. 2, 2025

JournalArticleLocalServiceUtil を使用して検索し、タイトルで並べ替える方法は?

投稿者

Rita Schaff

knowledge-article-header-disclaimer-how-to

knowledge-article-header-disclaimer

legacy-article

learn-legacy-article-disclaimer-text

問題

  • JournalArticleLocalServiceUtil クラスを使用して Web コンテンツを検索する場合、次の問題に直面しています。

    • タイトルでソートすることはできませんそのローカリゼーションがテーブルに格納されているためです JournalArticleLocalization コンパレーターはそれを考慮していません

    • コンテンツを検索するとき、クラスはフィールド コンテンツの XML タグを考慮しているため、たとえば xml を検索すると、すべての Web コンテンツ記事が返されます。

例:

<?xml version="1.0"?>
<root available-locales="en_US" default-locale="en_US">
<dynamic-element name="Summary" type="text_box" index-type="text" instance-id="pkih">
<dynamic-content language-id="en_US"><![CDATA[Testes]]></dynamic-content>
</dynamic-element>
...
</root>

Environment

  • DXP 7.2

解決策

  1. 新しいサイトを作成する
  2. 新しいサイト ID をコピーします
  3. というタイトルの 3 つの基本的な Web コンテンツ記事を作成します。
    • A
    • B
    • C
  4. サイト ID を置き換えて、次の Groovy スクリプトを実行します。
import com.liferay.journal.model.JournalArticle;
import com.liferay.portal.kernel.util.OrderByComparatorFactoryUtil;
import com.liferay.journal.service.JournalArticleLocalServiceUtil;
import com.liferay.portal.kernel.workflow.WorkflowConstants;
import com.liferay.portal.kernel.util.OrderByComparator;
import com.liferay.portal.kernel.dao.orm.QueryUtil;

long groupId = <insert Site ID here>;
String structurekey = "BASIC-WEB-CONTENT"
OrderByComparator<JournalArticle> comparator = OrderByComparatorFactoryUtil.create("JournalArticleLocalization", "title",true);
List<JournalArticle> journalArticles = JournalArticleLocalServiceUtil.getArticlesByStructureId(groupId, 0, structurekey, WorkflowConstants.STATUS_APPROVED, QueryUtil.ALL_POS, QueryUtil.ALL_POS, comparator);

for (JournalArticle j : journalArticles) {
out.println("--"+j.getTitle());
}

追加情報

did-this-article-resolve-your-issue

legacy-knowledge-base