Apache Isis:如何正确实现自定义提交表单或页面?

时间:2017-06-11 17:58:36

标签: wicket isis

我是Apache Isis的新手而且我被困住了。

我想创建自己的提交表单,其中包含用于搜索某些实体的可编辑参数以及包含以下搜索结果的网格。

首先,我创建了带有搜索结果集合的@DomainObject(nature = Nature.VIEW_MODEL),搜索参数和搜索@Action。 经过深入研究,我发现了严格的动作实现(For exapmle ActionParametersFormPanel)。我可以在没有提示的情况下使用@Action并编辑@DomainObject属性(我的搜索参数用于操作)吗? 我可以通过layout.xml实现它吗?

然后我尝试更改这里描述的组件:6.2 Replacing page elements,但我很困惑应该使用哪个ComponentType和IModel,可能是ComponentType.PARAMETERS和ActionModel,或者为我的情况实现我自己的IModel。

我是否应该实现自己的Wicket页面进行搜索并通过PageClassList接口进行注册,如下所述:6.3 Custom pages 据我所知,我需要替换一个PageType的页面类,但我应该更改哪一个?

那么,问题是如何正确实施这些问题?我应该选择哪种方式?

谢谢!

=====================更新===================

我以这种方式实现了HomePageViewModel:

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

    private String id;
    private String type;

    public TranslatableString title() {
        return TranslatableString.tr("My custom search");
    }

    public List<SimpleObject> getObjects() {
        return simpleObjectRepository.listAll();
    }

    @Action
    public HomePageViewModel search(
            @ParameterLayout(named = "Id")
            String id,
            @ParameterLayout(named = "Type")
            String type
    ){
        setId(id);
        setType(type);
        // finding objects by entered parameters is not implemented yet
        return this;
    }

    @javax.inject.Inject
    SimpleObjectRepository simpleObjectRepository;
}   

它以这种方式工作: Custom search reality

我想使用没有任何对话框窗口的参数实现内置ViewModel操作,如下所示: Custom search expectation

1)是否可以基于ComponentType.PARAMETERS和ActionModel创建类似ActionParametersFormPanel的smth,并在我的ViewModel中将此组件用作@Action?

2)或者我应该使用ComponentType.COLLECTION_CONTENTS?当我理解我的搜索结果网格时,我的搜索输入面板就像一个我的存根组件?

谢谢。

1 个答案:

答案 0 :(得分:1)

我们在JIRA中有JIRA ticket来实现可过滤/可搜索的组件,但它还没有成为实现列表的顶部。

作为替代方案,您可以拥有一个视图模型,该模型提供您要作为属性过滤的参数,下面有一个表格。 (我看到你在视图模型上问了另外一个关于SO属性的问题,所以也许你正朝这个方向发展......我已经回答了这个问题。)

如果您想要实现该票证,那么要使用的ComponentTYpe是COLLECTION_CONTENTS。如果您查看isisaddons,例如excelgmap3,那么它可能会帮助您入门。

=======更新到答案(基于对查询的更新)==========

我有一些好消息要告诉你。应该在几周内发布的v1.15.0-SNAPSHOT支持“内联提示”。您应该会发现这些用户体验非常类似于您所使用的体验,您无需进一步的工作。

要试用它,请检查当前的trunk,然后加载simpleapp(在examples / application / simpleapp中)。您应该看到编辑属性和调用操作使用新的内联提示样式。

HTH 丹