Eclipse无法从Facelets的AbstractBean / AbstractEntity中看到Beans模型的字段

时间:2019-06-25 19:00:33

标签: eclipse generics jsf facelets abstraction

我正在运行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;
    }
}

我的AbstractEntity:

@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上的超链接。

我在另一个开发人员的日食中看到我的两个问题根本不是问题。我比较了两个Eclipse中安装的所有工具,找不到任何相关的东西。

我的问题:我必须安装哪些工具,或者我缺少哪些设置/调整?

请注意:我不想禁用验证器,并且希望能够在facelet中超链接字段,以便使用Ctrl + click访问该字段。

谢谢。

0 个答案:

没有答案