如何在 Apache isis 中对集合列进行排序?
How to order collection columns in Apache isis?
我使用 apache ISIS 快一年了,它是一个 很棒的 框架。我正在尝试提高生成的用户界面的可用性,并且正在寻找一种方法来对屏幕上显示的集合的列进行排序。
我找不到使用 @Collection 或 @CollectionLayout 对列进行排序的方法,也找不到示例可能在 layout.xml 文件中。
如果集合中最相关的列首先显示 - 在 table - 的左侧,那将真正提高我的用户界面的可用性在 table 视图中。
(我在集合 属性 中显示的域实体通常有一个超级 class 定义公共字段。单个实体的属性显示使用 layout.xml 和 bootstrap 布局,但我仍在为在用户界面中显示为 tables 的集合寻找类似的构造。我在文档或高级指南中找不到任何提示)。
感谢任何提示,我可以如何控制显示域实体集合的 table 中列的顺序并提高用户界面的可用性。
很高兴知道您喜欢使用该框架。
使用注释执行此操作的方法是使用 @MemberOrder
,而不是 @CollectionLayout
。
但是,如果您有一个 layout.xml
文件,那么这(应该)覆盖 @MemberOrder
注释。在这种情况下,列的顺序与 layout.xml
.
中属性的顺序相同
您还可以使用 <collection id="xxx" hidden="ALL_TABLES">
(或者 @CollectionLayout(hidden=Where.ALL_TABLES)
)来隐藏您不想显示为列的属性。
综上所述,我最近确实发现了一个我认为是错误的东西(在 1.13.0
上):layout.xml
似乎在收集顺序中被忽略了,即使用于对象形式。这是不一致的,我还没有深入了解它。我的解决方法是重新添加 @MemberOrder
注释;这成功了。
另一个注意事项:如果您有选项卡和常规字段集的复杂组合,那么您会发现选项卡中的那些属性被认为是第一个,即使字段集中有 属性来到它之前。这可以说是一个错误,但它是实现的一个症状:代码在字段集之前对 tabgroups/tabs 进行了深度遍历。
最后,这是一个技巧。您可以做的是在要在列中显示的实体上定义一堆派生属性,并进行配置,以便只有这些属性显示在表中,并以对象形式隐藏,例如:
public class Customer {
@Getter @Setter private String name;
public String getNameAsColumn() { return getName(); }
}
然后在 layout.xml
:
<property id="name" hidden="ALL_TABLES"/>
<property id="nameAsColumn hidden="OBJECT_FORMS">
<named>Name</named>
</property>
HTH
旦
我使用 apache ISIS 快一年了,它是一个 很棒的 框架。我正在尝试提高生成的用户界面的可用性,并且正在寻找一种方法来对屏幕上显示的集合的列进行排序。
我找不到使用 @Collection 或 @CollectionLayout 对列进行排序的方法,也找不到示例可能在 layout.xml 文件中。
如果集合中最相关的列首先显示 - 在 table - 的左侧,那将真正提高我的用户界面的可用性在 table 视图中。
(我在集合 属性 中显示的域实体通常有一个超级 class 定义公共字段。单个实体的属性显示使用 layout.xml 和 bootstrap 布局,但我仍在为在用户界面中显示为 tables 的集合寻找类似的构造。我在文档或高级指南中找不到任何提示)。
感谢任何提示,我可以如何控制显示域实体集合的 table 中列的顺序并提高用户界面的可用性。
很高兴知道您喜欢使用该框架。
使用注释执行此操作的方法是使用 @MemberOrder
,而不是 @CollectionLayout
。
但是,如果您有一个 layout.xml
文件,那么这(应该)覆盖 @MemberOrder
注释。在这种情况下,列的顺序与 layout.xml
.
您还可以使用 <collection id="xxx" hidden="ALL_TABLES">
(或者 @CollectionLayout(hidden=Where.ALL_TABLES)
)来隐藏您不想显示为列的属性。
综上所述,我最近确实发现了一个我认为是错误的东西(在 1.13.0
上):layout.xml
似乎在收集顺序中被忽略了,即使用于对象形式。这是不一致的,我还没有深入了解它。我的解决方法是重新添加 @MemberOrder
注释;这成功了。
另一个注意事项:如果您有选项卡和常规字段集的复杂组合,那么您会发现选项卡中的那些属性被认为是第一个,即使字段集中有 属性来到它之前。这可以说是一个错误,但它是实现的一个症状:代码在字段集之前对 tabgroups/tabs 进行了深度遍历。
最后,这是一个技巧。您可以做的是在要在列中显示的实体上定义一堆派生属性,并进行配置,以便只有这些属性显示在表中,并以对象形式隐藏,例如:
public class Customer {
@Getter @Setter private String name;
public String getNameAsColumn() { return getName(); }
}
然后在 layout.xml
:
<property id="name" hidden="ALL_TABLES"/>
<property id="nameAsColumn hidden="OBJECT_FORMS">
<named>Name</named>
</property>
HTH 旦