2

我正在使用 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>

x:ajax update="city" listener="#{hotelBean.handleCityChange}" 不起作用,我搜索但 JSF1.1 不支持 Ajax。

那么我该怎么做呢,我怎么能使用javascript呢?而且我对JS的了解较少。谢谢

4

1 回答 1

6

根据Tomahawk 1.1 标签文档,根本没有<t:ajax>标签(是的,我知道您出于某种不清楚的原因将t前缀重命名为,为了保持一致性,我将继续调用它)。xt

以前,在 JSF 1.1 时代,人们会为此使用 Ajax4jsf 标签库,当时它仍然是一个单独的项目,可在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>
于 2012-11-21T11:14:43.597 回答