2012-02-13 31 views
1

我有我的web應用程序有點麻煩,基本上我不斷收到一個警告消息:更新界面:從主模板(JSF和Primefaces)定義形式的內容

信息:無法找到標識成分「formName」在視圖中。

我知道這是爲什麼發生,但我只需要確定它們是否是修復/更好的解決方案。

基本上我有一個主模板文件,其中包含多個<p:dialog>組件,它們具有各種CRUD功能。當用戶與這些組件交互時,我使用內置的primefaces'update'函數來快速更新<ui:defined>頁面中的各種表單/組件。但是,由於JSF Web應用程序(即主模板和ui:定義的網頁)的佈局以及我在主模板文件中定義這些組件的事實,這意味着可以更新的表單/組件不一定在當前視圖中並在上面引發警告消息。

例如:

如果我有我的主模板文件:一個叫< p:dialog id="componentA" />組件master.xhtml。然後我有page1.xhtml與<h:form id=page1Form/>和類似的我有一個page2.xhtml與<h:form id=page2Form/>,它們都包含由會議後臺支持bean提供的信息,如果CRUD操作發生時確保這些表單被更新的最佳方法是什麼使用componentA?目前,我只是使用< p:dialog id="componentA" update="page1Form, page2Form" />,但由於只有page1或page2在視圖中,Tomcat吐出了上述消息。那麼是否有可能根據我所在的頁面動態指定要更新的表單/組件,還是必須指定每個頁面上的componentA(這將會有很多重複的html /代碼,並且不是特別易於管理),或者是否存在更新當前視圖中所有表單/組件的方法?或者是我正在做的是正確的,我應該關閉我的web.xml中的開發模式以停止消息?

乾杯

盟友

+1

你可以拉起h:表單放在ui周圍:insert?這種方式形式將是您的網頁的靜態部分,並始終存在。 – mrembisz 2012-02-13 15:49:56

+1

我想我可以使用ui:param標籤動態設置要更新的表單/組件,具體取決於您所在的頁面。 – Ally 2012-02-13 17:04:26

+0

聽起來不錯,如果它適合你的結構。 – mrembisz 2012-02-13 18:51:24

回答

3

只是爲了確認,如果有人絆倒在這個線程。我設法通過使用<ui:param name="paramName" value:"a value"/>值來解決我的上述問題。

基本上在主模板文件中指定喜歡你的組件你會即

<p:commandButton value="Submit" action="#{someBean.doSomeStuff()}" 
update="#{paramName}" /> 

然後在你的頁面<ui:composition>您只需狀態PARAM名稱和值:

<ui:param name="paramName" value="someForm someOtherForm"/> 

工作崗位goodun!