【问题标题】:Apache Isis: @Property(editing = Editing.ENABLED) doesn't work for ViewModelsApache Isis:@Property(editing = Editing.ENABLED) 不适用于 ViewModel
【发布时间】:2017-06-15 13:50:17
【问题描述】:

我向 ViewModel 添加了一个属性并用 Editing.ENABLED 标记它。

@DomainObject(
        nature = Nature.VIEW_MODEL,
        objectType = "homepage.HomePageViewModel"
)
public class HomePageViewModel {

    @Setter @Getter
    @Property(editing = Editing.ENABLED)
    private String editableField;

}

但此字段在 UI 上不可编辑:

但它适用于 SimpleObject:

它是否适用于 ViewModel? 也许 ViewModel 不应该有任何属性?

【问题讨论】:

    标签: isis


    【解决方案1】:

    不,它不适用于视图模型...框架旨在支持这一点。

    好消息是有一种解决方法。如果您将类注释为使用(更灵活的)JAXB 样式的视图模型,那么一切都会按预期工作。

    这是课程的更新版本;寻找以@Xml 开头的注解...:

    @XmlRootElement(name = "compareCustomers")
    @XmlType(
        propOrder = {
                "editableField"
        }
    )
    @XmlAccessorType(XmlAccessType.FIELD)
    public class HomePageViewModel {
    
        @XmlElement(required = true)
        @Setter @Getter
        @Property(editing = Editing.ENABLED)
        private String editableField;
    
        public TranslatableString title() {
            return TranslatableString.tr("{num} objects", "num", getObjects().size());
        }
    
        public List<SimpleObject> getObjects() {
            return simpleObjectRepository.listAll();
        }
    
        @XmlTransient
        @javax.inject.Inject
        SimpleObjectRepository simpleObjectRepository;
    }
    

    有关 JAXB 视图模型的更多信息,请参阅user guide

    同时,我已针对您发现的问题提出了JIRA ticket

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-17
    • 2011-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多