在我的web應用程序JSF2(mojarra 2.1.20), 中,頁面上有一個奇怪的行爲,下面的代碼片段:h:commandLink f:當頁面有f:viewParam required =「true」時不會調用ajax動作
<h:commandLink ... action="#{cc.attrs.bean.next}">
<f:ajax execute="@this" render=":#{cc.clientId}" />
</h:commandLink>
動作next()
並不總是叫。我發現,這個問題是由於某些原因到URL參數ID相關:
<f:metadata>
<f:viewParam name="id" value="#{torneoBean.idParam}" required="true" />
</f:metadata>
當我插入viewParam上面出現問題。但我無法擺脫它。調試ajax請求似乎啓動,成功,完成事件序列被調用(沒有錯誤),渲染的組件被正確渲染,但行動不被觸發。 有沒有辦法調試這種情況,找出問題的根本原因是什麼?
感謝BalusC!解決方案#2解決了我的問題,但總的來說,我該如何調試這樣的問題? h:消息肯定可以幫助,但是我可以使用階段偵聽器來解決這個問題(一種錯誤行爲檢測器)以及與未調用的操作有關的所有其他問題嗎? – maxqua72 2013-04-07 06:16:31
記錄當前階段的階段偵聽器確實會暗示更新模型值和調用應用程序階段已被跳過。此外,你還沒注意到JSF記錄了排隊但未顯示的消息嗎?至少,莫哈拉是這麼做的。作爲最後的手段,在'FacesServlet#service()'中放置一個斷點並在那裏推進窗體也應該給出很多見解。你越是這樣做,越瞭解JSF的生命週期,就越容易發現潛在的問題。 – BalusC 2013-04-07 11:31:39
奇怪的是,沒有任何錯誤或警告在日誌中追蹤到排隊和未顯示的消息。日誌很乾淨,這就是爲什麼我要求一種調試方式。這對像這樣的情況會有幫助。 – maxqua72 2013-04-07 12:07:56