2016-10-27 2 views
2

Я использую apache ISIS почти год, и это отлично рамки. Я пытаюсь улучшить удобство использования сгенерированного пользовательского интерфейса, и я ищу способ упорядочить столбцы коллекции, отображаемые на экране.Как заказать столбцы коллекции в Apache isis?

я не мог найти способ, чтобы заказать колонки с помощью @Collection или @CollectionLayout и не мог найти пример, если это возможно в layout.xml файл.

Это действительно улучшит удобство использования моего пользовательского интерфейса, если первые соответствующие столбцы коллекции будут отображаться сначала - в левой части таблицы - в виде таблицы.

(Объекты моего домена, представленные в свойстве коллекции, часто имеют суперклассы, определяющие общие поля. Отображение атрибутов одного объекта отлично с использованием layout.xml и макета начальной загрузки, но я все еще ищу аналогичную конструкцию для коллекции, отображаемые в виде таблиц в пользовательском интерфейсе. Я не мог найти никаких намеков в документации или расширенном руководстве).

Благодарим за любые подсказки, как я мог контролировать порядок столбцов в таблице, отображающей коллекцию объектов домена, и улучшать удобство использования пользовательского интерфейса.

ответ

3

приятно знать, что вам нравится использовать каркас.

Способ сделать это с помощью аннотаций @MemberOrder, а не @CollectionLayout.

Однако, если у вас есть файл layout.xml, то это (должно) переопределить аннотацию @MemberOrder. В этом случае порядок столбцов совпадает с порядком свойств в layout.xml.

Вы также можете использовать <collection id="xxx" hidden="ALL_TABLES"> (или, альтернативно, @CollectionLayout(hidden=Where.ALL_TABLES)), чтобы скрыть свойства, которые вы не хотите отображать в виде столбцов.

Все, что сказал, я недавно обнаружил, что, по моему мнению, является ошибкой (на 1.13.0): что, казалось, игнорируется для порядка коллекции, хотя используется для формы объекта. Это непротиворечиво, и я не дошел до сути. Моим обходным путем было просто добавить в аннотации @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> 

НТН Dan

+0

Спасибо Дэн. Это сделал трюк. Советы о том, как скрыть свойство из всех коллекций, используя _ @ PropertyLayout (hidden = Where.ALL_TABLES) _, и подход с производным свойством округлили мой пользовательский интерфейс. –