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

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

written-by

Rita Schaff

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

問題

  • 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