2013-02-20 44 views
2

我有一個問題,使用ui:repeat嵌套在我想調用監聽器的對方中。我也試過c:forEach,但是也遇到了同樣的問題。jsf監聽器不會在嵌套的UI中調用:重複

爲了演示問題,我簡化了代碼以解決問題。 有兩個按鈕,第一個UI中的第一個:重複,調用成功一個簡單的監聽器。第二個按鈕位於嵌套的ui:repeat元素中,應該調用與第一個按鈕相同的偵聽器,但不會調用偵聽器。

你能告訴我這有什麼問題嗎?

<div> 
    <ui:repeat var="testList" value="#{testBean.testList}"> 
     <h:commandButton value="test1"> 
      // the listener is called if I click this button 
      <f:ajax event="click" execute="@this" listener="#{testBean.testListener}" /> 
     </h:commandButton> 
     <ui:repeat var="nestedList" value="#{testList.nestedList}"> 
      <h:commandButton value="test2"> 
       // the listener will not be called if I click this button 
       <f:ajax event="click" execute="@this" listener="#{testBean.testListener}" /> 
      </h:commandButton> 
     </ui:repeat> 
    </ui:repeat> 
</div> 
+0

你的'h:form'在哪裏?也可以從按鈕 – Daniel 2013-02-20 09:01:51

+0

中刪除'event =「單擊」execute =「@ this」'有一個周圍的'h:form',我剛剛簡化了代碼。 我不'在實際的代碼中使用按鈕,只是爲了測試我自己和在這裏演示。即使我刪除了這兩個屬性,偵聽器也不會被第二個按鈕調用。 – user2090297 2013-02-20 09:19:35

回答

3

這是一個已知的Mojarra問題,涉及<ui:repeat>的故障狀態管理。具體來說,這個問題報告爲issue 1817並自Mojarra 2.1.15以來修復。

升級您的Mojarra版本。這是已經在2.1.19。

+0

非常感謝。 這解決了這個問題。 但不幸的是,在調用與Mojarra 2.1.17和2.1.19的javax.servlet.http.Cookie.setDomain中的監聽器後,我得到一個NullPointerException。以前的版本(2.1.16)工作正常! – user2090297 2013-02-20 14:13:45

+1

根據您編輯的評論,如果您確信這是一個Mojarra錯誤,請向完整的堆棧跟蹤提出新問題或向Mojarra傢伙報告。 – BalusC 2013-02-20 14:18:59