使用Jsf 1.1实现Ajax

V.R*_*han 2 javascript ajax jsf

我正在使用JSF1.1,我想从第一个更新第二个selectOneMenu并拥有此代码_

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ taglib uri="http://www.azureworlds.org" prefix="azure"%>
<%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="x"%>
<%@ taglib uri="http://www.asifqamar.com/jsf/asif" prefix="a"%>
Run Code Online (Sandbox Code Playgroud)

...

<h:outputText value="State* " />
<x:selectOneMenu value="#{hotelBean.state}">
                    <f:selectItem itemLabel="Select One" itemValue="" />
                    <f:selectItem value="#{hotelBean.mapStates }" />
                    <x:ajax update="city" listener="#{hotelBean.handleCityChange}" />

</x:selectOneMenu>

                <h:outputText value="City* " />
                <x:selectOneMenu id="city" value="#{hotelBean.city}">

                    <f:selectItem itemLabel="Select One" itemValue="" />

                    <f:selectItem value="#{hotelBean.mapCities }" />
                </x:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)

x:ajax update ="city"listener ="#{hotelBean.handleCityChange}" 无法正常工作,我搜索但JSF1.1不支持Ajax.

那我该怎么办呢,我怎么能用javascript?我对JS的了解较少.感谢名单

Bal*_*usC 6

根据Tomahawk 1.1标签文档,根本没有<t:ajax>标签(是的,我知道您为了一些不明原因重命名了t前缀x,我将继续调用它t以保持一致性).

以前,在JSF 1.1时代,人们会使用Ajax4jsf taglib,然后它仍然是http://ajax4jsf.dev.java.net上的一个单独的项目.没有其他适合JSF的Ajax库.我模糊地回想起Dojo上的一些库作为这篇IBM文章的废话,但它很不受欢迎.后来,在JSF 1.2时代开始时,Ajax4jsf被JBoss RichFaces收购并作为其子库包含在内.从那时起,您无法再从官方网站单独下载Ajax4jsf,您必须下载整个RichFaces组件库.

但是,在Maven存档深处,您仍然可以下载原始的Ajax4jsf库.这是:Ajax4jsf 1.0.6.原始java.net站点已关闭,因此原始开发人员指南也不再可用.然而,谷歌显示有一个网站有原始Ajax4jsf开发人员指南在线备份(该网站非常慢;一旦完成下载,我将创建一个离线副本,以便更快地参考,也适用于它曾经失败的情况) .此外,还有一篇关于如何设置和使用它的JavaWorld文章(与MyFaces结合使用).

最终,您最终会使用<a4j:support>如下内容:

<%@ taglib uri="https://ajax4jsf.dev.java.net/ajax" prefix="a4j"%>
...
<h:outputLabel for="state" value="State* " />
<t:selectOneMenu id="state" value="#{hotelBean.state}">
    <f:selectItem itemLabel="Select One" itemValue="" />
    <f:selectItem value="#{hotelBean.mapStates }" />
    <a4j:support event="onchange" actionListener="#{hotelBean.handleCityChange}" reRender="city" />
</t:selectOneMenu>
<h:outputLabel for="city" value="City* " />
<t:selectOneMenu id="city" value="#{hotelBean.city}">
    <f:selectItem itemLabel="Select One" itemValue="" />
    <f:selectItem value="#{hotelBean.mapCities }" />
</t:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)