2016-11-21 33 views
0

重複我有一個密切相關的兩個問題:JSF不能在UI更新單一的形式:從外部

  1. 我需要更新內部UI標籤內的一種形式:在主頁從對話框重複和不知道如何(因爲在UI中有很多標籤:重複,我只需要更新一個)
  2. 命名容器被搞砸了,當我在該表單中使用id時失去了它們的「索引」(如果試圖確定更新路徑表達式...)

原因我需要這個:更新'w holelist'(現狀)在<p:dialog>內部以某種方式打破了所有<p:calendar>(沒有錯誤...)(日曆覆蓋顯示在第一次,但是在更新列表之後它不再出現(必須再次重新加載頁面)。此外,我不希望每次更新100元,如果只有一個可以改變

page.xhtml

<h:panelGroup id="wholelist"> 
    <ui:repeat var="entry" value="#{bean.foundEntries}" id="repeatId"> 
     <customTag:someTag entry="#{entry}" /> 
    </ui:repeat> 
</h:panelGroup> 
... 
<p:dialog widgetVar="dialog" id="dialog"> 
    <p:calendar value="#{bean.date}" ... /> <!-- overlay pops up on select until the whole list is refreshed. after that it does not appear until page reload --> 
    <p:commandButton actionlistener="#{bean.saveSomething()}" update="#{bean.componentToUpdate WHICH DOES NOT WORK...}"/> 
</p:dialog> 

someTag.xhtml

和內<customTag:someTag>(這是因爲多次重複使用的標籤):

... 
    <h:form> 
     ... display a lot of data which can be changed by the dialog... 
     <p:commandButton value="show edit dialog" onComplete="PF('dialog').show()" update=":dialog"> 
      <f:setPropertyActionListener value="??? (@form does not work)" target="#{bean.componentToUpdate}" /> 
     </p:commandButton> 
    </h:form> 

第一個問題:

我需要從對話框刷新一個單一的形式(=這需要知道形成我要刷新的對話,我不知道怎麼做......)

我怎樣才能得到更新邏輯的工作(傳遞組件更新到bean,使對話知道要更新或等於什麼)?

第二個問題:

爲什麼JSF生成根本沒有定義ID =的情況下 「......」 到UI內的命名容器:重複類似

  • repeatId:0 :j_id_c0_6
  • repeatId:1:j_id_c0_6
  • repeatId:2:j_id_c0_6

當我定義了一個ID形式(<h:form id="formname">)類似

  • repeatId:表格名稱
  • repeatId:表格名稱
  • repeatId:表格名稱

導致duplicateId(因爲缺乏名稱中的「迭代器號碼」)?

這是否有意義?

+0

JSF實現和版本信息? p:對話框是否相關?或者所有關於此事的PrimeFaces組件 – Kukeltje

+0

MyFaces,JSF 2.0。我認爲p:對話框是不相關的 - 它應該強調錶單必須可以從根xhtml頁面訪問/更新,而不是從自定義標籤或其他任何內容中訪問/更新。 Primefaces是相關的,因爲p:日曆在刷新後中斷,這是我打開問題的原因。 – Niko

+0

號碼:日曆停止工作,如果你更新「:wholelist」上保存並再次嘗試(第二個對話框中有一個非工作電話號碼:日曆) – Niko

回答

0

我已經解決了;錯誤在其他地方:我忘記了包含的標籤文件,導致js警告(打破了日曆)。

非常感謝