AjaxRenderKitFactory 在我的 Web 项目中阻止了 AJAX



我在 JSF 2.0 中遇到了与 Ajax 相关的问题

我们在同一个 EAR 中有 2 个 Web 项目 (WAR)。 第一个项目在人脸配置中具有以下内容.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}" />

我的faces-config中没有这个com.ibm.faces.renderkit.AjaxRenderKitFactory,那么为什么它会影响我的项目中的Ajax?

com.ibm.faces.renderkit.AjaxRenderKitFactory旨在在没有内置 ajax 支持的侏罗纪 JSF 1.x 版本中启用 ajax 支持。

从 JSF 2.0(2009 年 12 月)开始,JSF 通过新的 <f:ajax> 标记获得了内置的 ajax 支持。因此,为 JSF 1.x 设计的外部 ajax 库(例如来自 IBM 的库)变得不必要,它们甚至可能发生冲突,正如您所面对的那样。

只需将其完全删除即可。在 JSF 2.x 及更高版本中,不需要外部库即可使用 ajax。此外,您应该将任何 JSF 1.x 组件库升级到与 JSF 2.x 兼容的组件库。

相关内容

  • 没有找到相关文章

最新更新