У меня есть следующий код в веб-потоке:
<action-state id="blah">
<evaluate result="flowScope.payPageProxyUrl" expression="payPageProxyUrl"/>
где payPageProxyUrl в выражении определяется как Spring bean:
<bean id="payPageProxyUrl" class="java.lang.String">
<constructor-arg value="payPage/Request"/>
</bean>
похоже, что большую часть времени в потоке flowScope.payPageProxyUrl правильно установлено значение «payPage/Request», однако в некоторых случаях (другие JVM в кластере weblogic) я получаю приведенное ниже исключение, предполагающее, что выражение SpEL «payPageProxyUrl» равно null. Я подозреваю, что SpEL не всегда обращается к bean-компоненту, но что вы думаете и как я могу защититься от этого, не меняя имена bean-компонентов/областей потока?
Вот исключение:
org.springframework.webflow.execution.ActionExecutionException: Exception thrown executing [AnnotatedAction@21634dc0 targetAction = [EvaluateAction@7e85895f expression = payPageProxyUrl, resultExpression = flowScope.payPageProxyUrl], attributes = map[[empty]]] in state 'blah' of flow 'blah-payment' -- action execution attributes were 'map[[empty]]'
at org.springframework.webflow.execution.ActionExecutor.execute(ActionExecutor.java:60) ~[spring-webflow-2.3.1.RELEASE.jar:2.3.1.RELEASE]
...
Caused by: java.lang.NullPointerException: null
at org.springframework.expression.spel.ast.PropertyOrFieldReference.getValueInternal(PropertyOrFieldReference.java:88) ~[spring-expression-3.2.6.RELEASE.jar:3.2.6.RELEASE]