Primefaces timeline onchanged执行但不调用bean上的方法



我正试图将素数面添加到现有的Spring/JSF(myfaces)项目中。我有实际的时间轴组件在工作(或者至少加载了正确的数据),但事件侦听器似乎无法正常工作。我尝试了许多配置,但似乎无法解决此问题。

<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

奇怪的长组名是因为我正在将输出组名格式化为btw.行的更详细的标题

后面的bean(省略导入和包):

public class TimelineView<T> implements Serializable {
private static final long serialVersionUID = 1L;
TimelineView<T> timelineView;
public TimelineModel getModel() {
return timelineView.getModel();
}
public TimelineModel getModel(ListDataModel<? extends Row<T>> results) {  
return timelineView.getModel(results);
}
public void setTimelineView(TimelineView<T> timelineView) {
this.timelineView = timelineView;
}
public Date getStart() {  
return timelineView.getStart();  
}
public Date getEnd() {  
return timelineView.getEnd();  
}
public void onEdit(TimelineModificationEvent e) {
timelineView.onEdit(e);
}
public void onSelect(TimelineSelectEvent e) {
timelineView.onSelect(e);
}
}

这些方法中的功能和代码并不重要,因为当我设置断点时,我可以看到onEdit方法从未被调用,当我在时间线中有一个select事件时,onSelect方法也从未被调用。

由于我让Spring处理所有的bean,所以我的配置就是这样,位于ApplicationContext.xml文件中:

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

我尝试过在时间轴周围添加一个表单,但没有什么不同,还尝试过添加process=":form_id",这导致了错误"找不到表达式":form_I"的组件"。

作为一种也符合我需求的替代方案,有人知道如何将primefaces事件发送到要处理的javascript函数吗?例如,如果用户在时间线中移动项目的起点和终点,我希望更新显示的起点和结束日期。

我还想更改或拦截删除行为,并修改单击删除链接时发生的情况。

任何帮助都将不胜感激。谢谢

编辑


建议的潜在重复既不能解决症状,也不能解决实际解决方案-请参阅下面的答案。

好的,所以答案是Primfacestimeline组件必须设置一个widgetVar,才能使p:ajaxpe:javascript调用工作。令人难以置信的简单解决方案,但却很难找到。

相关内容

  • 没有找到相关文章

最新更新