1

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

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

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

然后我尝试按照此处所述更改组件:6.2 替换页面元素,但我很困惑我应该使用哪个 ComponentType 和 IModel,也许是 ComponentType.PARAMETERS 和 ActionModel,或者为我的案例实现我自己的 IModel。

我是否应该实现自己的 Wicket 页面进行搜索并通过 PageClassList 接口注册它,如下所述:6.3 自定义页面 据我了解,我需要替换 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?当我了解我的搜索结果网格和我的搜索输入面板将像一个我的存根组件?

谢谢你。

4

1 回答 1

1

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

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

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

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

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

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

HTH丹

于 2017-06-16T06:09:56.140 回答