2012-11-20 89 views
2

我在使用JSF1.1,我想從一日一&更新第二selectOneMenu用於有這個code_Ajax和JSF 1.1實現

<%@ 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的知識較少。 感謝名單

+0

請不要使用'[JSF的1.2]'用於JSF 1.1標記。如果您未使用Ajax4jsf庫(RichFaces的一部分,即「」標籤),請不要使用'[ajax4jsf]'標籤。 – BalusC

+0

回到你的具體問題,taglib是什麼'x' taglib從?這是無法識別的兩個標準JSF 1.1標籤庫中的任何一個'f =「http://java.sun.com/jsf/core」'和'h =「http://java.sun.com/jsf/html 「'。 – BalusC

+0

@BalusC好的,我在帖子中顯示了我的taglibs。 –

回答

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的掠奪者,但它是不受歡迎的。後來,在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> 
+0

好吧,意味着我需要首先從_Ajax4jsf 1.0.6_鏈接下載它。並通過_JavaWorld article_ Article?安裝它。 –

+0

我會閱讀他們自己的開發者指南,因爲這是最完整和最準確的資源。 – BalusC

+0

好吧,我正在嘗試。非常感謝。 –