Инъекция в конвертере не работает в JSF 2.3 - PullRequest
0 голосов
/ 26 сентября 2018

Сервер: Payara 5.183.

Когда используется конвертер, возникает исключение NullPointerException, потому что внедренный EJB равен нулю (System.out.println печатает «ноль»).

Работает(Внедрение не ноль), если я использую обходной путь, используемый до JSF 2.3: замена @FacesConverter на @ Name.

Конвертер:

@FacesConverter(value = "compteConverter", managed = true)
public class CompteConverter implements Converter<CompteBancaire> {

  @EJB
  private GestionnaireCompte gestionnaireCompte;

  @Override
  public CompteBancaire getAsObject(FacesContext context, UIComponent component, String id) {
    if (id == null || id.isEmpty()) {
      return null;
    }
    try {
      System.out.println("*****EJB gestionnaireCompte=" + gestionnaireCompte);
      return gestionnaireCompte.getCompte(Long.parseLong(id));
    } catch (NumberFormatException e) {
      throw new ConverterException(new FacesMessage("Id de compte invalide"), e);
    }
  }

  @Override
  public String getAsString(FacesContext arg0, UIComponent arg1, CompteBancaire compte) { ... }

Использование этого конвертера:

  <ui:define name="metadata">
    <f:metadata>

      <f:viewParam name="id" value="#{operations.compte}"
                     converter="compteConverter"/>

Это ошибка Мохарры / Паяры (managed = true не работает) или вы можете помочь мне найти мою ошибку?

1 Ответ

0 голосов
/ 26 апреля 2019

Управляемые конвертеры не работают по умолчанию.Чтобы заставить их работать, я добавил компонент CDI, аннотированный @FacesConfig (для использования JSF 2.3) и @ApplicationScoped (это будет компонент CDI с этой аннотацией).

...