AjaxRenderKitFactory блокирует AJAX в моем веб-проекте
Я столкнулся с проблемой, связанной с Ajax в JSF 2.0
У нас есть 2 веб-проекта (WAR) в одном EAR. первый проект имеет следующее в face-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 блокирует 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}" />
У меня нет этого com.ibm.faces.renderkit.AjaxRenderKitFactory в моем лице-конфигурации, так почему это влияет на Ajax в моем проекте?
1 ответ
com.ibm.faces.renderkit.AjaxRenderKitFactory
разработан для включения поддержки ajax в версиях JSF 1.x, которые не имеют встроенной поддержки ajax.
Начиная с JSF 2.0 (декабрь 2009 г.), JSF получил встроенную поддержку AJAX с новым <f:ajax>
тег. Поэтому внешние библиотеки ajax, разработанные для JSF 1.x, такие как библиотеки IBM, становятся ненужными, и они могут даже конфликтовать, как вы столкнулись.
Просто удалите это полностью. В JSF 2.x и новее вам не нужны внешние библиотеки для использования ajax. Более того, вы должны обновить любые библиотеки компонентов JSF 1.x до JSF 2.x-совместимой.