Programmgesteuertes Auswerten eines Bean-Ausdrucks mit Spring Expression Language
Ich habe einen einfachen Spring Bean-Ausdruck, der gut ausgewertet wird, wenn ich ihn in einer Anwendungskontextdatei definiere:
<bean id="myConfigBean" class="com.example.myBeanConfigBean">
<property name="myProperty" value="#{ someOtherBean.getData() }"/>
</bean>
Jetzt möchte ich die gleiche Auswertung programmatisch durchführen. Ich habe den folgenden Code verwendet:
final ExpressionParser parser = new SpelExpressionParser();
final TemplateParserContext templateContext = new TemplateParserContext();
Expression expression = parser.parseExpression("#{ someOtherBean.getData() }", templateContext);
final String value = (String) expression.getValue();
Dies löst eine Ausnahme aus:
EL1007E:(pos 22): Field or property 'someOtherBean' cannot be found on null
Ich schätze, ich muss irgendwie ein Root-Objekt setzen, das es den konfigurierten Beans erlaubt, wie eine Eigenschaft. Aber ich habe es noch nicht zum Laufen gebracht. Wer hat das schon gemacht und könnte einen Hinweis geben?