graulich
I'm new here

Entity.getValue(Attribute<T>) | Wie kommt man an den Wert eines "CMS_INPUT_LINK"?

Hallo zusammen,

wir haben ein kleines Problem bei unserem Sprachfallback auf Entity-Ebene (welches wir aufgrund einer Anforderung implementieren mussten).

Ruft man in einem HTML Kanal eines x-beliebigen Render-Templates folgendes auf $CMS_VALUE(prm_entity.link)$, so wird die Methode EntityImpl.getValue(String) aufgerufen. Diese ruft wiederum EntityImpl.getValue(Attribute<T>) auf.

Hier haben wir uns für unser Sprachfallback "dazwischengehängt" und tun folgendes (angenommen das Attribute arg0 welches als Parameter übergeben wird hat den Namen "link_EN" und der Datensatz ist nicht im Englischen gepflegt):

@Override

public <T> T getValue(Attribute<T> arg0) throws ORException {

     if(exists(langFallbackField)){ // langFallbackField == 'link_EN'

          try{

                     arg0 = (Attribute<T>) getEntityType().getAttribute(langFallbackField);

          }catch (Exception e) {}

     }

     return entity.getValue(arg0);

}

Wir "überschreiben" sozusagen das Attribute arg0, welches als Parameter für getValue(Attribute<T>) geliefert wird, mit dem Wert link_DE, sobald der Datensatz nicht im Englischen übersetzt wurde (der Wert von langFallbackField wird außerhalb ermittelt).

$CMS_VALUE(prm_entity.link)$ liefert im Deutschen (ebenfalls über unsere Wrapper-Methode getValue) ganz normal den Link. Im Englischen liefert unsgere Methode getValue (da der Datensatz nicht ins Englische übersetzt wurde) alle Werte auf Deutsch (der Mastersprache), außer die Werte welche über CMS_INPUT_LINKs eingepflegt sind.

Was machen wir falsch?

Beste Grüße

Dominic Graulich

0 Kudos
1 Reply
maaroufi
I'm new here

Hallo Dominic,

ist das Problem noch aktuell oder hat es sich mittlerweile geklärt ?

Hinweis: getValue() liefert das XML zurück

Freundliche Grüße

Ismail

0 Kudos