【问题标题】:Apache Isis: How to implement your custom submit form or page properly?Apache Isis:如何正确实现您的自定义提交表单或页面?
【发布时间】:2017-06-17 17:53:35
【问题描述】:

我是 Apache Isis 的新手,但我被困住了。

我想创建我自己的带有可编辑参数的提交表单,用于搜索一些实体和一个带有下面搜索结果的网格。

首先,我创建了@DomainObject(nature=Nature.VIEW_MODEL) 与搜索结果集合、搜索参数和@Action 搜索。 经过深入研究,我发现了严格的操作实现(例如 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;
}   

它以这种方式工作:

我想在没有任何对话框窗口的情况下实现一个带有参数的内置 ViewModel 操作,就像这样:

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

2) 或者我应该使用,如你所说,ComponentType.COLLECTION_CONTENTS?据我了解,我的搜索结果网格和我的搜索输入面板将像一个我的存根组件?

谢谢。

【问题讨论】:

    标签: wicket isis


    【解决方案1】:

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

    作为替代方案,您可以拥有一个视图模型,该模型将您要过滤的参数作为属性提供,并在其下方提供一个表格。 (我看到你在这里问了另一个关于视图模型的 SO re 属性的问题,所以也许你也在朝着这个方向前进……我已经回答了这个问题。

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

    ======= UPDATE TO ANSWER(基于对查询的更新)==========

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

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

    HTH 丹

    【讨论】:

    • 谢谢!请问你能看到更新的帖子吗?我还有几个问题。
    • 我检查了当前主干 1.15-SNAPSHOT 并运行 simpleapp。实际上这个新功能(内联提示)不太适合我的情况,但无论如何内联提示在 ViewModels 中不起作用(对于属性和操作),也许原因与 Editing.EDITABLE 不起作用的原因相同视图模型。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-26
    • 2014-05-21
    • 1970-01-01
    • 2013-04-02
    相关资源
    最近更新 更多