JSF 2 аннотации и параметры управляемого свойства
Я использую JSF 2 и Sprig 3, и я хочу перейти от использования face-config.xml к аннотациям.
старый: face-config.xml:
<managed-bean>
<managed-bean-name>banqueBean</managed-bean-name>
<managed-bean-class>commun.BanqueBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>banqueService</property-name>
<value>#{banqueService}</value>
</managed-property>
<managed-property>
<property-name>banqueId</property-name>
<value>#{param.banqueId}</value>
</managed-property>
</managed-bean>
новый:
public class BanqueBean{
private Banque banque;
@ManagedProperty(name = "banqueService", value = "#{banqueService}")
private BanqueService banqueService;
@ManagedProperty(value = "#{param.banqueId}")
private String banqueId;
// setters for banqueService and banqueId
значение banqueId устанавливается с помощью:
<f:param value="#{banque.id}" name="banqueId" />
проблема в том, что при использовании face-config.xml "Система" вызывает установщик banqueService перед установщиком параметра banqueId, чтобы я мог использовать banqueService внутри метода setBanqueId.
при использовании аннотаций он вызывает установщик banqueId перед banqueService, так что я получаю значение null в качестве его значения.
почему это инвертирует вызов этого метода эвакуации?
1 ответ
Вы не должны полностью полагаться на порядок вызова метода установщика свойства. Это нигде не определено в спецификации.
Просто подключитесь в тот момент, когда JSF завершит настройку всех управляемых свойств. Это @PostConstruct
аннотированный метод.
@PostConstruct
public void init() {
banque = banqueService.find(banqueId);
}
Прекратите делать бизнес-логику в установщиках, это необходимо, только если вы все еще используете устаревшую JSF 1.1, которая не поддерживала @PostConstruct
,
Не знаете о конкретной проблеме, знаете ли вы о новом JSF2? <f:viewParam>
? Это может также помочь вам избавиться от этого шаблона в бобе и в конечном итоге иметь только Banque
собственность и многоразовый Converter
,