У меня постоянный класс
@Component
public class NameConstants implements Serializable{
public final static String NAME = "randomName";
public static String getNAME() {
return NAME;
}
}
И следующий веб-поток, похоже, не работает для меня:
<subflow-state id="#{NameConstants.NAME }" subflow="someflow">
Можно ли использовать выражение EL внутри поля ID? Я продолжаю получать ошибку:
'#{NameConstants.NAME }'is not a valid value for 'NCName'.
2 ответа
Почему вы будете использовать константу в качестве идентификатора для состояния подпотока? Я предполагаю, что нет смысла использовать внешний объект для установки идентификатора в поле идентификатора состояния потока.
Вы можете попробовать это
<subflow-state id="#{T(com.foo.NameConstants).NAME}" subflow="someflow">
<!-- NameConstants#getNAME should be called -->
Я не тестировал это решение.
Почему NameConstants
аннотируется с @Component
? Я думаю, что это также должно работать с простым Pojo или Enum. Я никогда не пытался использовать EL в поле id состояния потока.
Мы используем выражения EL следующим образом:
<subflow-state id="choose-address-subflow" subflow="address">
<input name="addressTypeId" value="T(org.our.company.domain.Address$Type).DELIVERY.getId()" type="java.lang.Integer"/>
...
</subflow-state>
Где org.shop.domain.Address$Type
— это вложенное перечисление в модели домена org.shop.domain.Address
, которое можно увидеть на $
между Address
и Type
.
Другой пример — сохранение значения в области потока и доступ к нему в состоянии принятия решения.
<view-state id="summary" view="some-view">
<on-entry>
<!-- value can also be defined in some external objects like Address$Type-->
<set name="flowScope.nextState" value="'is-submitted'" type="java.lang.String"/>
</on-entry>
...
</view-state>
В состоянии принятия решения
<decision-state id="is-check-successful">
<if test="action.isCheckSuccessful(flowRequestContext)"
<!-- if check returns true, next state is is-submitted -->
then="#{flowScope.nextState}"
else="first-state"/>
</decision-state>
Да, вы можете сделать это так
#{T(com.foo.NameConstants).NAME}
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.