2012-03-12 54 views
0

我看到詢問有關如何整頓組件更新代碼,而遷移到Primefaces 3.1,防止異常的問題更新Primefaces成分在3.1 *無內^ h封閉:形式*

無法找到標識成分「....」在視野中。

但是如何更新未包含在表單元素中的組件?如我需要更新,使用遠程命令,以下ouputPanel: -

<p:outputPanel id='messageBox''> 
    ... 
</p:outputPanel> 

使用: Primefaces 3.1 JSF 2.1.6

回答

2

僅僅通過其絕對的客戶端ID引用它代替。 update屬性在默認情況下是相對於當前的UINamingContainer組件(<h:form>就是這樣)。假設給定<p:outputPanel>本身不在其他UINamingContainer組件內,那麼只需使用update=":messageBox"

<p:commandButton ... update=":messageBox" /> 

如果你不知道,那麼你需要在瀏覽器中打開網頁,做查看源和定位的在那裏<p:outputPanel id="messageBox">生成的HTML元素,取其id屬性的精確值,然後用默認的命名容器分隔符:作爲前綴。

+0

我沒有太多更願意直接使用JSF生成的ID,從源頭看,作爲上進行更改頁碼的細微變化。我是否應該使用'binding'方法在你的答案中描述這裏:http://stackoverflow.com/questions/7970268/using-one-component-datatable-id-inside-composite-component – 2012-03-12 12:59:56

+0

只要給所有'UINamingContainer'組件一個固定的ID。例如。 ''。這樣JSF就不會爲它們自動生成一個。 – BalusC 2012-03-12 13:01:45

+0

謝謝..但我仍然好奇爲什麼綁定方法不是首選,而是給所有組件提供ID? :) – 2012-03-12 14:16:16

0

指定的"<h:form>"組件的唯一ID,然後使用如下代碼來更新組件

udpate="@(#messageBox)" 
+0

請解釋爲什麼OP應該給表單一個唯一的ID,也請解釋爲什麼OP應該使用PFS而不是一個正常的客戶端ID。 – BalusC 2013-02-19 11:27:45