我看到詢問有關如何整頓組件更新代碼,而遷移到Primefaces 3.1,防止異常的問題更新Primefaces成分在3.1 *無內^ h封閉:形式*
無法找到標識成分「....」在視野中。
但是如何更新未包含在表單元素中的組件?如我需要更新,使用遠程命令,以下ouputPanel: -
<p:outputPanel id='messageBox''> ... </p:outputPanel>
使用: Primefaces 3.1 JSF 2.1.6
我看到詢問有關如何整頓組件更新代碼,而遷移到Primefaces 3.1,防止異常的問題更新Primefaces成分在3.1 *無內^ h封閉:形式*
無法找到標識成分「....」在視野中。
但是如何更新未包含在表單元素中的組件?如我需要更新,使用遠程命令,以下ouputPanel: -
<p:outputPanel id='messageBox''> ... </p:outputPanel>
使用: Primefaces 3.1 JSF 2.1.6
僅僅通過其絕對的客戶端ID引用它代替。 update
屬性在默認情況下是相對於當前的UINamingContainer
組件(<h:form>
就是這樣)。假設給定<p:outputPanel>
本身不在其他UINamingContainer
組件內,那麼只需使用update=":messageBox"
。
<p:commandButton ... update=":messageBox" />
如果你不知道,那麼你需要在瀏覽器中打開網頁,做查看源和定位的在那裏<p:outputPanel id="messageBox">
生成的HTML元素,取其id
屬性的精確值,然後用默認的命名容器分隔符:
作爲前綴。
指定的"<h:form>"
組件的唯一ID,然後使用如下代碼來更新組件
udpate="@(#messageBox)"
請解釋爲什麼OP應該給表單一個唯一的ID,也請解釋爲什麼OP應該使用PFS而不是一個正常的客戶端ID。 – BalusC 2013-02-19 11:27:45
我沒有太多更願意直接使用JSF生成的ID,從源頭看,作爲上進行更改頁碼的細微變化。我是否應該使用'binding'方法在你的答案中描述這裏:http://stackoverflow.com/questions/7970268/using-one-component-datatable-id-inside-composite-component – 2012-03-12 12:59:56
只要給所有'UINamingContainer'組件一個固定的ID。例如。 ''。這樣JSF就不會爲它們自動生成一個。 –
BalusC
2012-03-12 13:01:45
謝謝..但我仍然好奇爲什麼綁定方法不是首選,而是給所有組件提供ID? :) – 2012-03-12 14:16:16