[java] Vaadin에서 데이터 필터링 및 정렬하기

Vaadin은 자바 개발자들에게 웹 UI를 만들고 관리하기 위한 강력한 도구입니다. 데이터 필터링 및 정렬은 웹 어플리케이션에서 매우 중요한 기능 중 하나입니다. 이번 블로그 포스트에서는 Vaadin에서 어떻게 데이터를 필터링하고 정렬할 수 있는지 알아보겠습니다.

데이터 필터링

Vaadin에서 데이터 필터링을 구현하는 가장 쉬운 방법 중 하나는 Grid 컴포넌트를 사용하는 것입니다. Grid는 표 형태의 데이터를 표시하는 컴포넌트로, 내용을 동적으로 업데이트할 수 있습니다.

먼저, 데이터를 표시할 Grid 컴포넌트를 생성합니다.

Grid<Data> grid = new Grid<>(Data.class);
grid.setItems(dataList);

여기서 Data는 데이터 모델 클래스이고, dataList는 표시할 데이터의 리스트입니다.

다음으로, 필터링할 조건을 지정하는 필터를 생성합니다.

TextField filterField = new TextField();
filterField.setPlaceholder("Filter by name");
filterField.addValueChangeListener(e -> {
    String filterText = e.getValue();
    grid.setItems(dataList.stream().filter(data ->
            data.getName().toLowerCase().contains(filterText.toLowerCase()))
            .collect(Collectors.toList()));
});

위 코드에서는 TextField를 사용하여 사용자가 원하는 텍스트를 입력하면 해당 텍스트가 포함된 데이터만 필터링하여 Grid에 표시되도록 설정합니다.

데이터 정렬

Vaadin의 Grid 컴포넌트를 사용하여 데이터를 정렬하는 것도 매우 간단합니다.

grid.addColumn(Data::getName).setHeader("Name").setSortProperty("name");
grid.addColumn(Data::getAge).setHeader("Age").setSortProperty("age");

위 코드에서는 addColumn 메서드를 사용하여 각 컬럼을 생성하고, setHeader 메서드를 사용하여 컬럼의 헤더를 지정합니다. setSortProperty 메서드를 사용하여 해당 컬럼을 정렬할 때 사용할 속성을 지정합니다.

Data 클래스의 getName 메서드 및 getAge 메서드는 각 컬럼에 해당하는 값을 반환하는 메서드입니다.

또는, 사용자 정의 정렬 로직을 적용하려면 Comparator를 사용할 수도 있습니다.

grid.addColumn(Data::getDate).setHeader("Date").setComparator(Comparator.comparing(Data::getDate, Comparator.nullsLast(Comparator.naturalOrder())));

위 코드에서는 Data 클래스의 getDate 메서드를 사용하여 날짜 값을 얻고, Comparator를 이용하여 날짜 값을 정렬하는 로직을 작성하고 있습니다.

마무리

이제 Vaadin에서 데이터를 필터링하고 정렬하는 방법을 알아보았습니다. Grid 컴포넌트를 사용하여 데이터를 표시하고 필터링 및 정렬할 수 있으며, 필요한 경우 사용자 정의 로직을 적용할 수도 있습니다. Vaadin은 데이터 관리와 UI 제어를 단순히 처리할 수 있도록 도와주는 훌륭한 도구입니다.

더욱 자세한 내용은 Vaadin 공식 문서를 참조하시기 바랍니다.