2010-09-16 106 views
0

我有JSF頁面有兩個下拉列表,我想加載第二個基於什麼選擇中的第一個值。但是,「onchange」事件僅在第二次更改選擇時才被檢測到!JSF valueChangeListener僅在第二次嘗試時才作出反應?

網頁代碼片段:

<h:form id="selectRegion"> 
    <h:selectOneMenu id="governorate" 
      value="#{SearchView.governorate}" 
      styleClass="mediumInput" immediate="true" 
      valueChangeListener="#{SearchView.goverValueChanged}" 
      onchange="submit();"> 
      <f:selectItems value="#{SearchView.goverItemsList}" id="govItems" /> 
    </h:selectOneMenu> 

    <h:selectOneMenu id="district" 
      value="#{SearchView.district}" 
      styleClass="mediumInput"> 
      <f:selectItems value="#{SearchView.districtItemsList}" id="distItems" /> 
    </h:selectOneMenu> 
</h:form> 

<h:form id="SearchFor"> 
<hx:commandExButton 
    id="button1" styleClass="btn" type="submit" 
    value="Search" action="#{SearchView.searchAction}" 
    onclick="document.getElementById('selectRegion').submit();"> 
</hx:commandExButton> 
</h:form> 

的問題是,當我修改省的值是第二次,但不是第一次goverValueChanged(ValueChangeEvent事件)時纔會激活(我把系統出在goverValueChanged(ValueChangeEvent事件)知道)。

有沒有人有關於什麼可能是錯誤的想法?提前致謝!我正在使用JSF 1.1並在IBM WAS上運行

回答

1

很久以前,我上次碰到IBM和JSF 1.1,但我隱約記得一些古老的JSF 1.1錯誤,它導致valueChangeListener不會當初始值爲null時被觸發。我建議到初始值(僅次於value="#{SearchView.governorate}"屬性)設置爲空字符串或別的東西。

你當然也可以升級JSF 1.1到最新版本JSF 1.1_02。它有很多功能錯誤修正,也許它也會解決這個(和其他)問題。 IBM WAS 5.x提供了一個非常早期的JSF 1.1版本,其中包含一些奇怪的錯誤。或者,也許您正在使用IBM WAS 6.x,那麼您也可以轉儲JSF 1.1,然後選擇JSF 1.2。您可以從檔案right here下載JSF庫。

+0

感謝您的回覆,我嘗試了初始化的想法,但它沒有工作......我認爲我們應該升級到JSF 1.2 – Moro 2010-09-16 14:57:39

+0

可以肯定的是:是不是HTML/JS代碼不會調用submit() ',還是隻是簡單地跳過valueChangeListener方法的JSF代碼?作爲窮人的調試,添加一個'警報( '嗒嗒')''來向onclick'排除一個又一個,即'的onclick = 「警報( 'ONCLICK叫!');提交();」'。 – BalusC 2010-09-16 14:59:51

相關問題