【问题标题】:Ajax with Jsf 1.1 implementationAjax 与 Jsf 1.1 实现
【发布时间】:2012-11-08 13:29:14
【问题描述】:

我正在使用 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的了解较少。 谢谢

【问题讨论】:

  • 对于 JSF 1.1,请不要使用 [jsf-1.2] 标签。如果您不使用 Ajax4jsf 库(&lt;a4j:xxx&gt; 标签,它是 RichFaces 的一部分),请不要使用 [ajax4jsf] 标签。
  • 回到您的具体问题,x taglib 来自哪个 taglib?这不能识别为两个标准 JSF 1.1 标签库 f="http://java.sun.com/jsf/core"h="http://java.sun.com/jsf/html" 中的任何一个。
  • @BalusC 好的,我在帖子中展示了我的标签库。

标签: javascript ajax jsf


【解决方案1】:

根据Tomahawk 1.1 tag documentation,根本没有&lt;t:ajax&gt;标签(是的,我知道您将t前缀重命名为x,原因不明,我将继续称它为t一致性)。

以前,在 JSF 1.1 时代,人们会为此使用 Ajax4jsf 标签库,当时它仍然是一个单独的项目,可在 http://ajax4jsf.dev.java.net 获得。 JSF 没有其他像样的 Ajax 库。我隐约记得 Dojo 之上的一些库是 this IBM article 的盗版,但它不受欢迎。后来,在 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 结合使用)。

最终,您希望最终使用 &lt;a4j:support&gt; 类似:

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

【讨论】:

  • 好的,意味着我需要首先从 Ajax4jsf 1.0.6 链接下载它。并通过 JavaWorld 文章 文章安装它?
  • 我会阅读他们自己的开发者指南,因为这是最完整、最准确的资源。
  • 感谢 BalusC 在 JSF 1.2 中的 ajax 历史
  • @BalusC,ajax4jsf 库是否需要任何配置才能运行?
  • 找到了,它需要这个过滤器:&lt;filter&gt; &lt;display-name&gt;Ajax4jsf Filter&lt;/display-name&gt; &lt;filter-name&gt;ajax4jsf&lt;/filter-name&gt; &lt;filter-class&gt;org.ajax4jsf.Filter&lt;/filter-class&gt; &lt;/filter&gt; &lt;filter-mapping&gt; &lt;filter-name&gt;ajax4jsf&lt;/filter-name&gt; &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt; &lt;dispatcher&gt;REQUEST&lt;/dispatcher&gt; &lt;dispatcher&gt;FORWARD&lt;/dispatcher&gt; &lt;dispatcher&gt;INCLUDE&lt;/dispatcher&gt; &lt;/filter-mapping&gt;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-01
  • 2014-01-06
  • 2015-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多