Select Primefaces 6 p:timeline 事件不触发bean方法
Select event of p:timeline of Primefaces 6 does not trigger bean method
我有这个 xhtml,其中有一个 p:timeline... 我想当我 select 一个对象(训练计划)时,显示一个包含详细信息的模式对话框。但是我无法触发 select 事件...该方法永远不会被调用!
这是我的 xhtml 代码
<fieldset class="scheduler-border">
<legend class="scheduler-border">#{msg['tp_list']}</legend>
<p:timeline id="timeline" value="#{nav.model}" height="450px" selectable="#{nav.selectable}" zoomable="# {nav.zoomable}" moveable="#{nav.moveable}" stackEvents="#{nav.stackEvents}" axisOnTop="#{nav.axisOnTop}" eventStyle="#{nav.eventStyle}" showCurrentTime="#{nav.showCurrentTime}" showNavigation="#{nav.showNavigation}">
<p:ajax event="select" listener="#{nav.onSelect}" />
</p:timeline>
</fieldset>
这是我的豆子:
@Named("nav")
@ViewScoped
private TimelineModel model;
private boolean selectable = true;
private boolean zoomable = true;
private boolean moveable = true;
private boolean stackEvents = true;
private String eventStyle = "box";
private boolean axisOnTop;
private boolean showCurrentTime = true;
private boolean showNavigation = false;
.
.
.
@PostConstruct
protected void initialize() {
LOGGER.info("In post-Construct INITIALIZE!");
model = new TimelineModel();
allPlans = tPlanService.getAllTPlan();
for (TrainingPlan tp : allPlans) {
LOGGER.info("IN FOR: " + tp.getEndDate());
model.add(new TimelineEvent(tp.getName(), tp.getStartDate(), tp.getEndDate()));
}
}
public void onSelect(TimelineSelectEvent e) {
LOGGER.info("In onSelect of NAV");
TimelineEvent timelineEvent = e.getTimelineEvent();
facesMessageBox.infoMessage("Selected event:", "aaaaaaaaaaaaaaaaaaaaa");
}
此方法 (onSelect) 从未被 ajax 调用! :(
展示示例也不适合我。但是将带有封闭形式的 process 属性作为值添加到 ajax 标签对我有用:
<h:form id="form">
...
<p:ajax
event="select"
listener="#{nav.onSelect}"
process=":form"
/>
...
</h:form>
请注意:添加 @this 或时间线标识符也不起作用!
我有这个 xhtml,其中有一个 p:timeline... 我想当我 select 一个对象(训练计划)时,显示一个包含详细信息的模式对话框。但是我无法触发 select 事件...该方法永远不会被调用!
这是我的 xhtml 代码
<fieldset class="scheduler-border">
<legend class="scheduler-border">#{msg['tp_list']}</legend>
<p:timeline id="timeline" value="#{nav.model}" height="450px" selectable="#{nav.selectable}" zoomable="# {nav.zoomable}" moveable="#{nav.moveable}" stackEvents="#{nav.stackEvents}" axisOnTop="#{nav.axisOnTop}" eventStyle="#{nav.eventStyle}" showCurrentTime="#{nav.showCurrentTime}" showNavigation="#{nav.showNavigation}">
<p:ajax event="select" listener="#{nav.onSelect}" />
</p:timeline>
</fieldset>
这是我的豆子:
@Named("nav")
@ViewScoped
private TimelineModel model;
private boolean selectable = true;
private boolean zoomable = true;
private boolean moveable = true;
private boolean stackEvents = true;
private String eventStyle = "box";
private boolean axisOnTop;
private boolean showCurrentTime = true;
private boolean showNavigation = false;
.
.
.
@PostConstruct
protected void initialize() {
LOGGER.info("In post-Construct INITIALIZE!");
model = new TimelineModel();
allPlans = tPlanService.getAllTPlan();
for (TrainingPlan tp : allPlans) {
LOGGER.info("IN FOR: " + tp.getEndDate());
model.add(new TimelineEvent(tp.getName(), tp.getStartDate(), tp.getEndDate()));
}
}
public void onSelect(TimelineSelectEvent e) {
LOGGER.info("In onSelect of NAV");
TimelineEvent timelineEvent = e.getTimelineEvent();
facesMessageBox.infoMessage("Selected event:", "aaaaaaaaaaaaaaaaaaaaa");
}
此方法 (onSelect) 从未被 ajax 调用! :(
展示示例也不适合我。但是将带有封闭形式的 process 属性作为值添加到 ajax 标签对我有用:
<h:form id="form">
...
<p:ajax
event="select"
listener="#{nav.onSelect}"
process=":form"
/>
...
</h:form>
请注意:添加 @this 或时间线标识符也不起作用!