2012-06-19 26 views
0

剛剛看到很多問題,包括「更新」,「@all」,「@form」,但沒有人在我的應用程序中解決了這種情況。JSF 2.0和Primefaces的另一個「無法找到組件」

我叫對答用自定義JSF標籤:

<h:form> 
    <h:panelGroup> 
     <p:commandButton action="#{Bean.action(catId, id)}" icon="ui-icon-weblibrary ui-icon-weblibrary-like" title="Start" update="@form" value="#{Bean.threadName}" /> 
    </h:panelGroup> 
</h:form> 

這個自定義標籤是由其他自定義標籤插入這樣的:

<ui:repeat value="#{Bean.threadList}" var="thread"> 
    <ui:include src="threadList.xhtml"> 
     <ui:param name="catId" value="..." /> 
     <ui:param name="id" value="..." /> 
    </ui:include> 
</ui:repeat> 

有時候,這可能是一個更新的結果第二個taglib和ajax。

而且這裏的東西...

  • 當我在p設置更新=「@形式」:的commandButton一切工作正常,但在我的日誌我看到一個「無法找到標識成分」 j_idt70: 0:j_idt82「在視圖中。」;
  • 當我設置update =「:@ form」或update =「:form」時,「無法找到標識符爲」j_idt70:0:j_idt82「的組件。」消失,但該事件不會更新任何內容(即使該操作成功運行);
  • 最後,當我給窗體和panelGroup一個id並嘗試更新=「:formId:panelId」或更新=「:@ formId:panelId」或更新=「:formId」消息「找不到帶標識符的組件」j_idt70 :0:j_idt82「在視圖中。」出現,沒有任何東西是uptade。

好奇的是瀏覽器的源代碼中沒有。所以,我不知道這個「幽靈」j_idt70是否會破壞所有的ID和更新命令。

在我再次問你這個問題之前,我嘗試了所有在棧溢出問題中學到的東西。

非常感謝您的閱讀和關注。

+1

什麼是JSF impl/version和PF版本? – BalusC

+0

「ghost」id是組件自動生成的ID。嘗試將ID添加到所有組件中,以便在打印錯誤消息時它會告訴您所查找的組件ID。此外,如果您的自定義組件具有表單,請記住,將在您的xhtml頁面內打印N個表單,並且commandButton範圍將僅爲該表單(至少在您的實際設計中)。如果您使用的是JSF 2,則可能[此鏈接](http://stackoverflow.com/q/5558249/1065197)可以幫助您。 –

+0

@BalusC,我使用的是JSF 2.0和Primefaces 3.0.1。 –

回答

2

到目前爲止給出的代碼對Mojarra 2.1.9和PrimeFaces 3.3來說工作得很好。

如果你升級到最新版本,那麼你的問題應該很有可能被解決。

+0

我明白了。我正在使用Mojarra 2.1.1,但這是因爲Netbeans配置了它。我可以下載一個新的jsf-impl.jar並替換它的jar,但我想知道是否有方法通過Netbeans IDE升級它。 –

+0

這是一個相當舊的版本,已經有1年多了。對不起,我不使用Netbeans,所以我不知道該怎麼做。 – BalusC

+0

沒問題@BalusC你幫了我很多。我會嘗試更新Mojarra和Primefaces,然後我會回來告訴它是否有效。非常感謝。 –