タイガー!タイガー!じれったいぞー!(SE編)

AS400, Java, JavaEE, JSF等の開発、習慣など。日々の気づきをまとめたブログ(備忘録)

【PrimeFaces】Ver10.0.0の検証結果

PrimeFacesの恩恵を受けるようになりまして、だいぶ年月が経過してしまいましたが、いつの間にかVer10.0.0がリリースされていたのですね!

現在利用中のVersionは6.2だったので、実験的にVer10.0.0へのマイグレーションをトライしてみました。

pom.xmlを編集し、Let's Goです!!

<dependency>
    <groupId>org.primefaces</groupId>
    <artifactId>primefaces</artifactId>
    <version>10.0.0</version>
</dependency>

※検証は数時間程度行っただけの簡易的なものです。ご了承ください。

検証結果

(1) デフォルトテーマ「aristo」が無くなっている

ビルドは成功したのですが、いきなり起動時に例外が発生しました。

javax.faces.FacesException: Error loading CSS, 
  cannot find "theme.css" resource of "primefaces-aristo" library

primefaces.github.io

マイグレーション・ガイドを確認したところ、Removed aristo theme and now saga the default themeと書かれていましたね。

こちらについては、他のテーマと同じように取得すればOK!
下記の記述をpom.xmlに追加して、再ビルドして通常起動できるようになりました。

<dependency>
    <groupId>org.primefaces.themes</groupId>
    <artifactId>aristo</artifactId>
    <version>1.0.1</version>
</dependency>

(2) AccordionPanel初回表示で、パネルOPENにもかかわらず中身が表示されない

www.primefaces.org

showcaseでは問題ないようなんです。
パネルがOPENになっていて中身も表示されています。

下記のような基本的なページを作成したみたものの結果は変わらずでした。。。

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html"
      xmlns:p="http://primefaces.org/ui">
    <h:head>
        <title>AccordionPanel テスト</title>
    </h:head>
    <h:body>
        <div>AccordionPanel テスト</div>
        <p:accordionPanel multiple="true">
            <p:tab title="First Tab Title">
                <h:outputText value= "タイトル1"/>
            </p:tab>
            <p:tab title="Second Tab Title">
                <h:outputText value="タイトル2" />
            </p:tab>
        </p:accordionPanel>
    </h:body>
</html>

f:id:no14141:20210819182634j:plain

「タイトル1」という中身が表示されていません。

ちなみに、アコーディオン制御の矢印を2回クリック(閉じて、開いて)すると、中身は表示されました。

こちらは解決できず。。。Ver8.0までは大丈夫だったのですが。

埒が明かないので、これについては、アコーディオンではない通常パネルに変更する必要がありそうですね。

(3) Client SideでSelectOneMenuの値をセットしようとするとjsエラーが発生する

// Console Error Message
Uncaught TypeError: this.items is undefined selectValue
PF('widgetVarName').selectValue(value1);

上記のコードの部分でエラーが発生していることがわかりました。

こちらについては、下記のissueでFixされているようです。

github.com


まとめ

結論としましては、現状のアプリでは、(3) の問題が致命的なので、次のVersionを待とうかと思っています。

ブラウザも次々に更新されていく中で、UI Frameworkの重要度もより高まっているので、基本「塩漬け対応」にはせずに、こういったチャレンジは継続していきたいところではありますね。