使用Jsf 1.1实现Ajax

时间:2012-11-20 13:10:06

标签: 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"%>

...

<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>

line x:ajax update =“city”listener =“#{hotelBean.handleCityChange}” 我没有工作,我搜索但JSF1.1不支持Ajax。

然后我能为此做些什么,我怎么能用javascript?我对JS的了解较少。 感谢名单

1 个答案:

答案 0 :(得分:6)

根据Tomahawk 1.1 tag documentation,根本没有<t:ajax>标记(是的,我知道您将t前缀重命名为x,因为某些原因不明,我我会继续调用t以保持一致性。)

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

但是,在Maven存档深处,您仍然可以下载原始的Ajax4jsf库。这是:Ajax4jsf 1.0.6。原始java.net站点已关闭,因此原始开发人员指南也不再可用。但是,Google显示有一个网站有一个online backup of the original Ajax4jsf developer guide(该网站速度非常慢;一旦完成下载,我会创建一个离线副本以便更快地参考,并且对于这种情况,它会一直下降)。此外,还有JavaWorld article如何设置和使用它(与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>