eine Managed Bean (MyBean) gegeben, die eine abstrakte Klasse erweitert (AbstractMapModel), die im Wesentlichen ein Wrapper für eine Karte ist:Expression Language Bean-Eigenschaft Auswerteauftrag
Die AbstractMapModel Klasse enthält eine getValue (Object key) Methode.
Die MyBean-Klasse enthält eine getName() -Methode.
Die XPage hat einen Wert, der zu # {MyBean.name} führt.
Ich finde, dass es MyBean.getValue ("Name") aufruft und ignoriert MyBean.getName(). Meine Frage ist, ist diese korrekte Operation?
Logischerweise scheint es, als sollte es versuchen, die spezifischere getName() vor dem Versuch, den generalisierten getValue ("Name"). Wenn man nachforscht, scheint es, dass, wenn getValue() null zurückgibt, es nach einem bestimmten Getter suchen soll, der, selbst wenn ich die Logik zweifelhaft finde, zumindest das richtige Endergebnis erhalten würde. Aber beides passiert nicht.
Ich habe das Problem mit dem folgenden Code gelöst:
public Object getValue(final Object key) {
/* Following code added to check for specific getter before performing getValues() */
String propertyName = key.toString();
propertyName = propertyName.substring(0, 1).toUpperCase() + propertyName.substring(1);
Method method = null;
try {
method = this.getClass().getMethod("get" + propertyName, new Class[] {});
if (method != null) {
return method.invoke(this);
}
} catch (Exception e) {
// Do nothing
}
try {
method = this.getClass().getMethod("is" + propertyName, new Class[] {});
if (method != null) {
return method.invoke(this);
}
} catch (Exception e) {
}
/* --------------------------------------------- */
return getValues().get(key);
}
Es scheint nicht, wie diese Abhilfe nötig sein sollte, so frage ich mich, ob ich etwas grundlegendes Missverständnis von dem, was los ist. Alternativ, gibt es einen besseren Weg, ich sollte das tun?
Ich habe es schon lange nicht mehr gesehen, aber Tim Tripcony hat ein Video dazu für NotesIn9 gemacht und über dieses genaue Problem gesprochen, wenn ich mich richtig erinnere. Grundsätzlich ist alles, was Tim vorgeschlagen hat, die beste Lösung. –
Was ich mache, ist von Tims Arbeit abgeleitet. Ich habe das NI9 seit einiger Zeit nicht mehr rezensiert, und ich glaube, ich habe mich nur schlecht erinnert, wie das funktionierte. Vielen Dank! –