在我的模型中,我声明了一个接口:

Interface('IMovement') {
    date_time 'etd'
    date_time 'rtd'
}


而且我有很多扩展此接口的实体:

Entity('Entity1', extend:'IMovement') {
...
}


我想通过添加一个计算属性来增强接口,该属性计算日期之间的差异:rtd-etd。

我在接口上添加了计算属性,并生成了扩展名。

public class IMovementExtension extends AbstractComponentExtension<IMovement> {

    public IMovementExtension(IMovement component) {
        super(component);

        //registerNotificationForwarding(component, IMovement.FIELD, IMovement.COMPUTED_FIELD);
    } ...


但是Eclipse引发了以下错误:


边界不匹配:IMovement类型不能替代
类型的有界参数
AbstractComponentExtension


有没有一种方法可以在接口上声明计算属性?

最佳答案

您绝对可以在Jspresso接口上使用计算属性,但是必须告诉框架您的接口实现了(扩展)IComponent,以便您可以使用扩展机制。

通过使用如下所示的服务条目可以轻松实现此目的:

Interface('IMovement',
  extension:'IMovementExtension',
  services:['org.jspresso.framework.model.component.IComponent':null]) {
    ...
}

07-25 23:51