1

PrimeFaces、PrimeFaces Mobile、MyFaces ExtVal の 3 つのフレームワークを一緒に使用しようとしています。ライブラリのバージョンは、PF 3.3.1、PF Mobile 0.9.3、MyFaces ExtVal 2.0.5 です。次のコードを検討してください。

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:p="http://primefaces.org/ui">
    <f:view>
        <h:head>
            <meta charset="UTF-8" />
            <title>Primefaces Mobile test</title>
        </h:head>
        <h:body>
            <h:form>
                <p:commandButton value="Oi" />
            </h:form>
        </h:body>
    </f:view>
</html>

プロジェクトに PrimeFaces と Mobile jar しかない場合、レンダリングされた commandButton は期待どおりです。

<button id="j_idt6:j_idt7" name="j_idt6:j_idt7" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" onclick="PrimeFaces.ab({source:'j_idt6:j_idt7'});return false;" type="submit"><span class="ui-button-text">Oi</span></button>

これはデフォルトの PrimeFaces レンダラーです。f:view を renderKitId を PRIMEFACES_MOBILE として構成すると、レンダリングされるボタンは次のようになります。

<button id="j_idt6:j_idt7" name="j_idt6:j_idt7" type="submit" data-iconpos="left" onclick="PrimeFaces.ab({source:'j_idt6:j_idt7'});return false;">Oi</button>

こちらもさすがにOK。ここで、MyFaces ExtVal jar を追加すると、すべてが壊れ、PRIMEFACES_MOBILE だけがコンポーネントのレンダラーになります。動作をテストするために、jar を追加しました: myfaces-extval-bean-validation-2.0.5.jar、myfaces-extval-core-2.0.5.jar、および myfaces-extval-property-validation-2.0.5.jar。次に、renderKitId を削除して、デフォルトの PrimeFaces ライブラリを使用する必要がありますが、結果は次のようになります。

<button id="j_idt6:j_idt7" name="j_idt6:j_idt7" type="submit" data-iconpos="left" onclick="PrimeFaces.ab({source:'j_idt6:j_idt7'});return false;">Oi</button>

f:view の renderKitId を HTML_BASIC に強制しようとしましたが、commandButton の PrimeFaces Mobile バージョンをレンダリングし続けます。

皆さん、何か提案はありますか?RenderKitId を定義する前は、システムは問題ありませんでしたが、ライブラリをアップグレードすると、このエラーが発生しました。PrimeFaces フォーラムに投稿しましたが、解決方法がわかりませんでした。また、なぜこのようなことが起こっているのかわかりません。

4

2 に答える 2

1

私と同じエラーが発生した場合、この問題は、MyFaces EXTVAL がレンダーキット ID を処理する方法に固有のものです。今日、@Howard の助けを借りて、問題を解決する EXTVAL 担当者からの新しい修正を見ました。

詳細を確認するには: https://issues.apache.org/jira/browse/EXTVAL-151 http://forum.primefaces.org/viewtopic.php?p=90933#p90933

昨年からサポートしてくれた @Howard と、修正してくれた MyFaces EXTVAL チームに感謝します。よろしく。

于 2013-02-21T16:49:19.270 に答える
0

@ Fernando、OmniFaces、MyFaces JAR、PrimeFacesMobileJARで発生した同様の問題を報告しました。OmniFacesはそれを修正し、次のように述べました。

プロジェクトメンバーbaluscによるコメント4、今日(4時間前)MyFacesでは、レンダリングキットIDは、ビューの作成中に(およびMojarraではビューの作成中に)設定されます。したがって、一時ビューには正しいレンダリングキットIDがありませんでした。

これは修正されました:ソースコードを表示

これにより、問題も修正される可能性があります。OmniFaces1.3で利用できます。JARをクラスパスに追加し、再テストして、テスト結果を返信します。web.xmlまたはfaces-config.xmlに変更を加える必要はないと思います。私が誤解していない場合、OmniFacesにはOmniPartialView(Context)と呼ばれるPartialViewContextがありますが、OmniFacesのFullAjaxExceptionHandlerをfaces-config.xmlに追加する必要がある場合があります。これにより、この問題が修正される可能性があります。

于 2012-11-07T05:24:58.720 に答える