Eclipse не может видеть за пределами полей моделей Бинов из AbstractBean / AbstractEntity в Facelets - PullRequest
0 голосов
/ 25 июня 2019

Я использую jee-2019-06 версию Eclipse.Вот моя структура Model-Bean-Facade:

Я не включаю геттеры / сеттеры для краткости.

Мой опознаваемый:

/** Identifiable interface for Entities; used for DAO - Service transitions. */
public interface Identifiable<T extends Serializable> extends Serializable {
    public T getId(); // identifiable field
    public String getTitle(); // user friendly name (maybe different from actual entity's name)
    public String getName(); // every entity has a name
    public String getDescription(); // every entity should have a description
}

Мой абстрактный бин:

public abstract class AbstractBean<T extends Identifiable<?>> {
    protected final transient Logger log = Logger.getLogger(this.getClass());
    private final Class<T> clazz;
    private T model;

    public AbstractBean(final Class<T> clazz) {
        this.clazz = clazz;
    }

    protected T createInstance() {
        try {
            return this.clazz.newInstance();
        } catch (InstantiationException | IllegalAccessException e) {
            this.log.error("[" + this.getClass().getSimpleName() + ".createInstance()] : Error : {} {}", e.getMessage(), e);
            return null;
        }
    }
    protected AbstractFacade<T> getFacade() {
        return null;
    }
}

Мой абстрактный фасад:

@Transactional
public abstract class AbstractFacade<T extends Identifiable<?>> {
    protected final transient Logger log = Logger.getLogger(this.getClass());
    protected final Class<T> clazz;

    public AbstractFacade(final Class<T> clazz) {
        this.clazz = clazz;
    }
}

Мой бин:

@Named
@ViewScoped
public class CarBean extends AbstractBean<Car> {
    @Inject
    private CarFacade facade;

    public CarBean(){
        super(Car.class);
    }

    @Override
    public CarFacade getFacade() {
        return this.facade;
    }
}

Мой абстрактный объект:

@MappedSuperclass
public abstract class AbstractEntity implements Identifiable<Integer> {
    private Integer id;
    private String name;
    private String description;

    public AbstractEntity() {
    }
}

Мой объект:

public class Car extends AbstractEntity {

    public Car() {
    }
}

У меня нет проблем с отображением значения для пользователя.

У меня проблемы с проверкой и гиперссылкой в ​​Eclipse:

<h:outputText value="#{carBean.model.name}" />

Валидатор Facelet не может проверить name из model.Желтое подчеркивает name.Кроме того, я не могу Ctrl + click активировать гиперссылку на name.

Я видел по затмению другого разработчика, что обе мои проблемы вообще не были проблемами.Я сравнил все инструменты, установленные в обоих Eclipses, и не смог найти ничего подходящего.

Мой вопрос: какие инструменты мне нужно установить или какие настройки / настройки мне не хватает?

Обратите внимание:Я не хочу отключать валидатор и хочу иметь возможность гиперссылки на поля в Facelet, чтобы я мог получить доступ к полю с помощью Ctrl + click.

Спасибо.

...