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 공식 문서를 참조하시기 바랍니다.
- Vaadin 공식 홈페이지: https://vaadin.com
- Vaadin Grid 문서: https://vaadin.com/components/vaadin-grid