2016-07-21 17 views
0

Ich habe diese XHTML, in der ich AP: Zeitachse habe ... ich möchte, wenn ich ein Objekt (Training pLan) auswählen, einen modalen Dialog mit der Einzelheiten. Aber ich kann das Select-Event nicht auslösen ... die Methode wird nie aufgerufen!Wähle Ereignis von p: Zeitleiste von Primefaces 6 löst keine Bean - Methode aus

Hier ist mein xhtml Code

<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> 

hier ist meine Bohne:

@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"); 
} 

diese Methode (onSelect) wird nie von der Ajax genannt! :(

Antwort

2

Vitrine Beispiel nicht für mich arbeiten, aber das Hinzufügen des Prozess Attributs mit der umschließenden Form als Wert ajax Tag für mich gearbeitet.

<h:form id="form"> 
    ... 
    <p:ajax 
    event="select" 
    listener="#{nav.onSelect}" 
    process=":form" 
    /> 
    ... 
</h:form> 

Bitte beachten Sie: das Hinzufügen @ Diese oder die Timeline-Kennung hat nicht funktioniert!

+0

Ok! Danke! Das hat den Trick! Aber ich musste mein Formular in zwei "brach", weil ich einige Daten von DB in einem Modal zu zeigen bekam ! Aber hat perfekt funktioniert! :) – PcS

+0

Hatte das gleiche Problem. Problem ausgelöst und wird behoben in 6.2 https://github.com/primefaces/primefaces/issues/2425: Timeline clientId generation gebrochen – Ravi

+0

Wenn ich dies versuche, bekomme ich "Kann Komponente für Ausdruck nicht finden": form "" als Javascript-Fehler – Momus