0

したがって、jsf アプリケーションに次の Datatable があります。

     <rich:extendedDataTable border="0px"
                value="#{package.packageSearchList}" var="o" id="mainTable"
                rowClass="test" styleClass="mainTable" rows="5"
                selection="#{package.selection}" selectionMode="single"
                iterationStatusVar="packageIndex">

                <a4j:ajax execute="@firstForm" event="selectionchange"
                    listener="#{package.selectionListener}"
                    render=":secondForm :res" />

                <rich:column>
                    <f:facet name="header" class="header">ID</f:facet>
                    <h:outputText value="#{o.packageID}" />
                </rich:column>

                <rich:column>
                    <f:facet name="header" class="header">Product Name</f:facet>
                    <h:outputText value="#{o.name}" />
                </rich:column>

                <rich:column>
                    <f:facet name="header" class="header">Cost</f:facet>
                    <h:outputText value="#{o.cost}" />
                </rich:column>

                <rich:column>
                    <f:facet name="header" class="header">Duration</f:facet>
                    <h:outputText value="#{o.duration}" />
                </rich:column>
                <rich:column>
                    <f:facet name="header" class="header">Size</f:facet>
                    <h:outputText value="#{o.size}" />
                </rich:column>
                <rich:column headerClass="blank">
                    <a4j:commandButton action="#{package.deletePackage}"
                        render="maintable :firstForm" value="&emsp;Remove"
                        styleClass="fancyButtonRemove">
                        <f:setPropertyActionListener target="#{package.editedPackage}"
                            value="#{o}" />
                    </a4j:commandButton>
                </rich:column>
            </rich:extendedDataTable>
            <rich:dataScroller id="tableDataScroller" maxPages="2"
                for="mainTable" renderIfSinglePage="true">
            </rich:dataScroller>

ユーザーがこれらのいずれかを選択すると、選択したオブジェクトに含まれる情報が出力パネルに表示されます。これは、Chrome、Firefox、IE8、および IE7 では問題なく動作しますが、IE9 または IE10 では動作せず、理由がわかりません。バックエンドでエラーがスローされたり、例外がスローされたりすることはありません。以前のバージョンの IE でも動作するため、かなり混乱しています。

奇妙なことに、すべてが壊れるわけではありません。テーブル内の任意のものを選択でき、問題なく選択してバックエンド呼び出しを行いますが、出力パネルをレンダリングせず、レコードを削除しようとしたり、datascroller を使用して extendedDataTable を変更しようとすると、すべてが壊れます。選択が機能しなくなり、ボタンの応答性がすべて失われます。

回避策として、次のコードを使用してブラウザーをデフォルトの IE8 ドキュメント モードに強制しようとしましたが、何をしても IE は常に IE9 に読み込まれます。

    <meta http-equiv="x-ua-compatible" content="IE=8" />

Richfaces 4.3.2 Final と Mojarra 2.0 を使用しています。何が起こっているのかについて何か考えがある人はいますか? どんな助けでも大歓迎です、ありがとう。

4

1 に答える 1

0

これは私の Mojarra バージョンに関連していることがわかりました。バージョン 2.1.9 にアップグレードして修正しました。pom ファイルで Javax.faces 依存関係を次のように上書きする必要がありました。

   <dependency>
        <groupId>com.sun.faces</groupId>
        <artifactId>jsf-api</artifactId>
        <version>2.1.9</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>com.sun.faces</groupId>
        <artifactId>jsf-impl</artifactId>
        <version>2.1.9</version>
        <scope>compile</scope>
    </dependency>

これが他の誰かに役立つことを願っています。

于 2013-09-17T09:32:05.627 に答える