Я использую 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
.
Спасибо.