2016-07-01 16 views
1

Bei meinem neuen Job bin ich gezwungen, Adobe AEM und alles, was dazu gehört, zu verwenden. Da aber alles für mich und mein Team neu ist, haben wir einige große Schwierigkeiten, zu verstehen, was die besten Praktiken sind und was der richtige "Code-Workflow" ist. Ich habe alles gelesen, was ich konnte, aber irgendetwas verwirrt mich mit meinem Kopf und ich kann es einfach nicht alleine herausfinden.Coding-Workflow, Modellupdates in AEM mit Sightly und Spring MVC

Meine Frage ist: Wenn ich nicht mit dem JCR-Baum arbeiten will, und ich möchte nur eine Komponente für einen bestimmten Benutzer (keine echte CMS-Komponente, denke ich), kann ich nicht verstehen wie ich meine Komponenteninformationen (basierend auf einigen Modellen) neu laden kann.

Also ... stell dir vor, ich habe einen authentifizierten Benutzer, der N Autos hat. Und ich habe eine Komponente entwickelt, die die Informationen eines dieser Autos zeigt. Das ausgewählte Auto kann sich ändern und ich möchte die Komponente mit den ausgewählten Fahrzeuginformationen aktualisieren.

Standardmäßig wird beim Laden der Seite die Autonummer 1 geladen.

Erste Frage: Wie sollte dieses erste Auto geladen werden? Mein erster Versuch bei diesem war, meine Komponente mit einer WCMUse-Erweiterung zu sichern, und auf der activate() -Methode würde ich meine Standard-Car-Eigenschaften einstellen.

Aber das scheint seltsam für mich, denn ich weiß nicht, wie ich diese Klasse meiner Feder-Controller verbinden ...

Ich habe gelesen, dass ResourceModel dafür verwendet werden kann, sondern dass es Karte seine Eigenschaften zu einem Car JCR-Knoten, den ich nicht habe.

Zweite Frage: Stellen Sie sich vor, dass das erste Auto korrekt geladen ist und ich eine Methode auf meinem Spring Controller aufrufen, um es zu aktualisieren. Was muss getan werden, um diese Änderung in der Fahrzeuginformationskomponente widerzuspiegeln?

Also, um zu beenden, ich denke, meine wichtigsten 2 Probleme sind: Was sollte das Modell für die Sightly-Komponente sein, und wie aktualisiert die Komponente mit den aktualisierten Informationen.

Vielen Dank.

Antwort

0

Willkommen bei AEM Welt silva, traurig zu hören, dass Sie gezwungen sind in AEM arbeiten.

Obwohl es zunächst schwierig erscheinen mag, kann ein Entwickler, der sein Geld verdient, genug Know-how sammeln, um mit AEM in etwa 6 Monaten zu arbeiten. Für einen Java-Entwickler ist es schwierig, etwas zu erzählen.

Zurück zu Ihrem Problem: Wenn ich Sie gut verstanden habe, möchten Sie Ihre Daten nicht in JCR speichern und Sie möchten Ihren Spring-Controller drücken, um die Daten abzurufen.

Antwort auf Erste Frage: Idealerweise in AEM liegen die Daten in JCR, es kann ein Benutzerknoten sein und dann Car0, Car1 ... CarN Kindknoten, hier werden alle Fahrzeugdetails als Eigenschaften auf Auto-Knoten gespeichert. Es geht darum, wie Sie Ihre Inhalte strukturieren möchten.

Wenn Sie vorhaben, keine Daten in JCR zu speichern, können Sie einen OSGI-Dienst erstellen, der die Daten von Ihrem Federcontroller erhält und an die sichtbare Komponente weiterleitet.

Antwort auf Zweite Frage Sie können einen Parameter an Ihre sehende Komponente übergeben und erhalten Sie die entsprechende Ansicht von CarN, Checkout Passing parameters to sightly.

Sie können auch hrefs erstellen, die die gleiche Seite laden und einige Anforderungsparameter übergeben, die Sie in Ihrer WCMUse (WCMUsePojo in AEM 6.2) Erweiterung Methode aktivieren können.

Halten Sie weiter lernen helfen, Cheers!

+0

Danke für Ihre Antwort! Aber ich habe immer noch Zweifel. : P Lassen Sie mich erklären: 1.) Wie würde ich Daten von meinem Spring Controller mit dem OSGi-Service bekommen? Müsste ich es per HTTP anrufen oder wäre ich in der Lage, es auf meinem Dienst zu injizieren? Ich weiß nicht, ob das sinnvoll ist, aber da beide im selben Paket sind und der OSGi-Service nicht Teil meines Anwendungskontexts sein würde, wie könnte ich den Spring Controller nennen? –

+0

2.) Vielleicht ist dies der Hauptort, an dem ich falsch denke, weil ich Client-seitiges Rendering gewohnt bin, nicht Server-Seite. Ich habe mehrere Komponenten auf meiner Seite, und in diesem Fall möchte ich nur Änderungen an der Autoinformationskomponente sehen, nicht die gesamte Seite. Kann ich das machen? Änderungen an dieser spezifischen Komponente nur erzwingen, indem Sie die Modelleigenschaften ändern? –