0

JSF 2.0 の Ajax に関連する問題に直面しています

同じ EAR に 2 つの Web プロジェクト (WAR) があります。最初のプロジェクトでは、faces-config.xml に次の内容が含まれています。

<factory>

    <faces-context-factory>

        com.ibm.faces.context.AjaxFacesContextFactory

    </faces-context-factory>

    <render-kit-factory>

        com.ibm.faces.renderkit.AjaxRenderKitFactory

    </render-kit-factory>

</factory>

何らかの理由で、com.ibm.faces.renderkit.AjaxRenderKitFactoryが他の Web プロジェクトで ajax をブロックしています。このセクションを削除すると、ajax は正常に動作します。

ここでの Ajax とは、

    <h:form>
        <h:selectOneMenu value="#{myBean.selected}">
            <f:selectItem itemValue="#{null}" itemLabel="ABC" />
            <f:selectItem itemValue="one" />
            <f:selectItem itemValue="two" />
            <f:selectItem itemValue="three" />
            <f:ajax listener="#{myBean.listener}" render="result" />
        </h:selectOneMenu>

        <h:outputText id="result" value="#{myBean.selected} #{myBean.result}" />

しかし、以下は正常に機能しています

        <h:commandButton value="commandButton" action="#{myBean.submit}">
            <f:ajax listener="#{myBean.listener}" render="result" />
        </h:commandButton>

        <h:outputText id="result" value="#{myBean.selected} #{myBean.result}" />

face -config にこのcom.ibm.faces.renderkit.AjaxRenderKitFactoryがないのに、プロジェクトで Ajax に影響を与えるのはなぜですか?

4

1 に答える 1

2

com.ibm.faces.renderkit.AjaxRenderKitFactory、ajax サポートが組み込まれていない jurassic JSF 1.x バージョンで ajax サポートを有効にするように設計されています。

JSF 2.0 (2009 年 12 月) 以降、JSF には新しい<f:ajax>タグによる ajax サポートが組み込まれています。したがって、IBM などの JSF 1.x 用に設計された外部 ajax ライブラリは不要になり、直面したように競合する可能性さえあります。

完全に削除するだけです。JSF 2.x 以降では、ajax を使用するために外部ライブラリは必要ありません。さらに、JSF 1.x コンポーネント ライブラリを JSF 2.x 互換ライブラリにアップグレードする必要があります。

于 2016-07-12T07:12:21.547 に答える