2017-10-29 171 views
0

我正試圖添加primefaces到現有的Spring/JSF(myfaces)項目。我有實際的時間軸組件工作(或至少加載正確的數據),但事件監聽器似乎不能正常工作。我嘗試了一些配置,但似乎無法解決此問題。Primefaces時間軸onchanged執行但不調用bean上的方法

<p:timeline id="timeline1" 
     value="#{timelineView.getModel(searchFacade.dataModel)}" 
     editable="true" eventMargin="10" eventMarginAxis="0" 
     start="#{timelineView.start}" 
     end="#{timelineView.end}" 
     showNavigation="true" showButtonNew="true" 
     axisOnTop="true" stackEvents="false" 
     oncomplete="styleEvents();"> 

    <p:ajax event="changed" listener="#{timelineView.onEdit()}" oncomplete="restyleTimeline()" /> 
</p:timeline> 

在上面的代碼中,觸發了更改的事件,並且發生了AJAX調用。在瀏覽器的網絡窗格中,我可以看到AJAX調用始終是當前頁面的URL(就像/mypage.jsf?conversationCode=a-我明顯也使用Apache Orchestra)

實際表單數據被用於改變的情況下發送看起來是這樣的:

javax.faces.partial.ajax:true 
javax.faces.source:timeline1 
javax.faces.partial.execute:timeline1 
javax.faces.behavior.event:changed 
javax.faces.partial.event:changed 
timeline1_eventIdx:0 
timeline1_startDate:1498881600000 
timeline1_endDate:1510894800000 
timeline1_group:<div class='timeline-group'><div class='timeline-row timeline-row-group'>Group One/div><div class='timeline-row timeline-row-sub'>Group One subtitle</div><div class='timeline-row timeline-row-details'>Group One details</div></div> 
mainForm:j_id_mt_SUBMIT:1 
javax.faces.ViewState: Big hash as usual 

的怪異長組名是因爲我順便說一句格式化輸出組名稱到一個更詳細的標題行。

在後面的豆(入口和包略):

這些方法中的功能和代碼沒有關係,因爲當我設置一個斷點,我可以看到,onEdit方法不會被調用當我在時間軸上有一個select事件時,onSelect方法也不是。

因爲我有春天處理所有豆子,我的配置只是這一點,位於applicationContext.xml文件:

<bean id="timelineView" class="com.mycompany.projectone.view.timeline.TimelineView" /> 

我曾嘗試加入的時間表,這沒有什麼區別圍繞的形式,並有還嘗試添加process =「:form_id」,從而導致錯誤「無法找到表達式的組件」:form_id「」。

作爲一種替代方案,也適合我的需求,有誰知道如何發送primefaces事件到一個JavaScript函數來處理?例如,如果用戶在時間軸中移動項目的開始和結束點,我想更新顯示的開始和結束日期。

我也想更改或攔截刪除行爲,並修改點擊刪除鏈接時發生的情況。

任何幫助將非常感激。謝謝。

編輯


建議的潛在的重複沒有解決症狀,也沒有實際的解決方案 - 見下文回答。

+0

[commandButton/commandLink/ajax動作/偵聽器方法未被調用或輸入值未設置/更新]的可能重複(https://stackoverflow.com/questions/2118656/commandbutton-commandlink-ajax-action-listener-method - 未調用或輸入值)編號#11 – Kukeltje

+0

並在調試模式下運行您的應用程序,我會期待錯誤! – Kukeltje

回答

0

好的,所以答案結果是,Primfaces timeline組件必須有一個widgetVar集才能使p:ajaxpe:javascript調用正常工作。令人難以置信的簡單解決方案,但非常難以找到。