Zum Hauptinhalt gehen

TargetReference erzeugen

Kommentare

9 Kommentare

  • Zendesk API User
    Author: Peter_Jodeleit - 8/26/2010 17:01

    Das Beispiel LinkEditorValueExample passt besser.

    Was dir fehlt, ist wie man im Link-Objekt (bei dir in der Variable "new_link_template" -> "new_link" würde besser passen) die Seitenrefernz setzt?

    Das geht über "new_link.getData() / setData()"...

    Gruß, Peter

    0
  • Zendesk API User
    Author: RZoller - 8/27/2010 8:21

    Hallo Peter,

    vielen Dank für Deine Antwort. Wie man den Link setzt ist mir klar. Was mir nicht klar ist ist wie man jetzt aus einem PageRef, der gegeben ist, einen Link zusammenbaut, so dass ich ihn mit setData() setzen kann.

    Gegeben ist für mich

    aSite vom Typ class de.espirit.firstspirit.store.access.sitestore.PageRefImpl

    Zu dieser Seite muss ich einen Link speichern.

    Wenn ich getData() mache bekomme ich:

    <<TEMPLATECONTENT><CMS_VALUE name="text"><LANG id="§" set="0"/></CMS_VALUE><CMS_VALUE name="sitestoreref"><LANG id="§" set="0"/></CMS_VALUE><CMS_VALUE name="linkTarget"><LANG id="§" set="0"/></CMS_VALUE><CMS_VALUE name="comment"><LANG id="§" set="0"/></CMS_VALUE></TEMPLATECONTENT>>

    Hier muss ich mir dann den sitestoreref holen mit

    new_link_template.getData().get("sitestoreref").getEditor();

    das Objekt, was dort herauskommt ist dann ein

    de.espirit.firstspirit.client.access.editor.ReferenceEditorValueImpl@150bde8

    bei dem ich jetzt nicht weiß, wie dort meinen Verweis zu meinem gegeben PageRef-Objekt speichere.

    In dem Beispiel (ReferenceEditorValueExample.html) benötige ich eine TargetReference...

    Viele Grüße

    René

    0
  • Zendesk API User
    Author: Peter_Jodeleit - 8/27/2010 8:29

    René Zoller schrieb:

    [..] das Objekt, was dort herauskommt ist dann ein

    de.espirit.firstspirit.client.access.editor.ReferenceEditorValueImpl@150bde8

    bei dem ich jetzt nicht weiß, wie dort meinen Verweis zu meinem gegeben PageRef-Objekt speichere.

    In dem Beispiel (ReferenceEditorValueExample.html) benötige ich eine TargetReference...

    [..]

    In meiner Version des Beispiels wird die TargetReference in Zeile 34 erzeugt:

        /**
         * Stores the given IDProvider in the reference editor for the specified language
         *
         * @since 4.2.34
         */
        public ReferenceEditorValue setValueForLanguage(final ReferenceEditorValue editor, final IDProvider idProvider, final Language language) throws InvalidValueException {

            // 1. check if language is provided if editor is language dependent ("useLanguages='yes'" in gom syntax)
            if (editor.isLanguageDependent() && (language == null)) {
                throw new NullPointerException("Language is missing!");
            }

            // 2. create a new @{link TargetReference} using the TargetReferences factory.
    /* LINE 34 */ final TargetReference targetReference = TargetReferences.newInstance(language, idProvider, "");
           
            // 3. store this instance in the editor value
            editor.set(language, targetReference);

    0
  • Zendesk API User
    Author: RZoller - 8/27/2010 8:58

    I meiner Version auch :smileywink:

    Wie komme ich denn nun von einem PageRef zur einem IDProvider?? Ich habe keine Methode gefunden, wie mir da ein Objekt von erzeugen kann. ODer übersehe ich da etwas?

    Danke für die Mühe!

    René

    0
  • Zendesk API User
    Author: gockel - 8/27/2010 10:43
    Wie komme ich denn nun von einem PageRef zur einem IDProvider?

    Ein PageRef ist ein IDProvider sprich PageRef erbt von IDProvider. Siehe Javadoc von PageRef

    0
  • Zendesk API User
    Author: RZoller - 8/27/2010 11:42

    ja, habe es auch schon gemerkt :smileywink:

    Vielen Dank für den Hinweis!

    0
  • Zendesk API User
    Author: RZoller - 8/27/2010 14:49

    Ich habe das Problem mit dem Link jetzt gelöst.

         //Speichern vorbereiten
         content2ElementTL = cs.getContent2ByName(CST_TEASERLISTE);
         tmpSession = content2ElementTL.getSchema().getSession();
         tmpSession.rollback();
        
         entity = tmpSession.createEntity(TBL_TEASERLISTE);
         entityData = content2ElementTL.getDataObject(entity);

    ...

    new_link = entityData.get("cs_link");
         new_link_editor = new_link.getEditor();

          allowedLinkTemplates = new_link_editor.getAllowedLinkTemplates();
          linkTemplate = allowedLinkTemplates.get(0); //LinkTemplate, nur eines hier definiert

          link = linkTemplate.createLink(lang_de); //Link
          link_data = link.getData();
         
           ref = link_data.get("sitestoreref").getEditor(); //ReferenceEditorValue
           targetref = ref.getEmpty(lang_de);
           targetref.set(aSite);
           ref.set(lang_de,targetref);
         
          link.setData(link_data);
          link.setText(aSite.getFilename());
        

    new_link_editor.set(lang_de, link);

    das wird innerhalb einer while-schleife ausgeführt und in einer Datenbank gespeichert. Jedoch haben alle Einträge in der Datenbank den gleichen Link, wenn ich diese überprüfe. Ich habe an allen möglichen Stellen schon geckeckt, ob der Wert in dem Link während der Schleifendurchläufen stimmt. Er wird korrekt ausgegeben, aber nicht gespeichert. Interessant ist auch, dass er bei der deutschen und englischen Sprachvariante andere Links speichert, obwohl angegeben wurde, dass es keine Sprachvarianten gibt.

    Ich speichere mit:

    content2ElementTL.setDataObject(entity,entityData);
    tmpSession.commit();

    Alle anderen Daten (zB. Text- oder DOM-Felder) sind korrekt gespeichert, nur der Link nicht. Woran könnte denn sowas liegen?!?

    Viele Grüße

    René

    0
  • Zendesk API User
    Author: aVogt - 8/27/2010 15:06

    Versuche mal mit

         entity.getSession().commit();

    zu speichern.

    Ich fülle auch einige <CMS_INPUT_LINK> bei mir funktioniert es.

    Session.commit() funktioniert bei mir nur bei bestehenden Datensätzen

    0
  • Zendesk API User
    Author: RZoller - 8/30/2010 9:36

    Vielen Dank für die schnelle Antwort! Leider hatte ich damit keinen Erfolg

    0

Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.