2012-08-24 151 views
0

我正在使用JSF 2與primefaces 3.3.1。刪除JSF錯誤消息

我在我的template.xhtml頁面中使用了表單標籤,並且包含了我所有的頁面。因此,所有頁面都採用相同的格式。我的情景是:我有兩個面板,一個是客戶搜索面板,另一個是客戶搜索結果面板。客戶搜索面板包含一些文本框和一個命令按鈕。在那個文本框中,我會給出一些關於客戶的輸入信息,我將點擊commandbutton。之後,我必須加載將包含一個數據表和搜索結果的客戶搜索結果面板。

最初我只會加載客戶搜索面板。一旦我點擊命令按鈕,那麼只有我會加載客戶搜索面板。在我的客戶搜索面板的命令按鈕中,我在update屬性中給出了客戶搜索結果面板ID。像

<p:commandButton value="click" action="#{bean.action}" update="cust_search_panel"/> 

當我按下命令按鈕JSF說「無法找到該標識符cust_search_panel組件」。因爲最初我不會加載客戶搜索結果面板,以便id不會在那裏。

使用primefaces 2.2.1時不存在問題,因爲如果組件不在表單中,那麼它們將添加信息消息,說'找不到具有標識符cust_search_panel的組件'。但在primefaces 3.3.1中,他們將該信息消息更改爲錯誤消息。所以現在我的頁面沒有被加載,因爲這個錯誤。

當我們收到諸如'找不到具有標識符cust_search_panel的組件'之類的消息時,如果可以從facescontext中刪除該錯誤消息,那麼我的頁面將正確加載?

我還沒有找到任何解決方案,除此之外。任何人都可以幫我解決這個問題。

在此先感謝。

回答

0

你有沒有試着用

<p:commandButton value="click" action="#{bean.action}" update=":cust_search_panel"/> 

0

我不知道任何其他簡單的解決方案。但是這應該工作:

從您的操作方法更新組件,並刪除按鈕上的更新屬性。

if (context.getViewRoot().findComponent("myForm:cust_search_panel") != null){ 
    RequestContext.getCurrentInstance().update("cust_search_panel"); 
} 
0

引用一個不存在的元素是錯誤的,JSF應該顯示一個錯誤。如果JSF允許加載頁面,則會導致JavaScript錯誤。

處理這個問題的正確方法是引用父元素。所以在你的情況下,你應該渲染面板並隱藏數據表。命令按鈕應更新包含數據表的面板。

例子:

<p:commandButton value="click" action="#{bean.action}" update="cust_search_panel"/> 

<your-container id="cust_search_panel"> 
    <p:dataTable rendered="#{bean.someCondition" .../> 
</your-container> 
+0

非常感謝你siebz0r您的幫助..你的建議救了我 – Mani