2014-10-20 25 views
6

Tôi đang cố gắng lọc bộ sưu tập bằng Thymeleaf bằng cách làm theo ví dụ trong url sau. "Chiếu & lựa chọn trên bộ sưu tập". http://doanduyhai.wordpress.com/2012/04/14/spring-mvc-part-iv-thymeleaf-advanced-usage/Làm thế nào để lọc một bộ sưu tập trong thymeleaf thứ: mỗi người sử dụng một tài sản khác trong so sánh

<tr th:each="artist,rowStat : ${listArtits.?[alive == true]}"> 
... 
</tr> 

Tuy nhiên tôi muốn sử dụng tài sản khác thay vì giá trị cố định (true/false). Ví dụ:

<tr th:each="artist,rowStat : ${listArtits.?[played > playedCountReq]}"> 
... 
</tr> 

trong đó khi chơiCountReq là một dạng biến khác có sẵn cho Thymeleaf. Tôi nhận được lỗi sau đây. Không thể tìm thấy thuộc tính hoặc trường 'playCountReq' trên đối tượng thuộc loại ...

Tôi đã thử nhiều cách nhưng không thành công. Bất kỳ đề xuất?

+0

Công việc duy nhất xung quanh/giải pháp mà tôi tìm thấy cho đến nay là sử dụng th: block. Di chuyển thứ: mỗi trong th: khối và thứ: nếu trong thẻ tr – gmansoor

+0

hãy đặt mã cho toàn bộ biểu mẫu/bảng của bạn theo cách đó chúng ta có thể thấy hình ảnh đầy đủ – Aeseir

Trả lời

5

tôi succeded :) Dưới đây là giải pháp:

trong điều khiển:

(...) 
Person p1 = new Person(); 
p1.setAge(20); 
Person p2 = new Person(); 
p2.setAge(30); 
List<Person> list = Lists.newArrayList(p1,p2); 
modelMap.addAttribute("list", list); 
Integer minAge = 13; 
modelMap.addAttribute("minAge", minAge); 
(...) 

trong html:

<table th:with="min=${minAge}"> 
<tr th:each="person,rowStat : ${list.?[age > __${min}__]}"> 
<td><span th:text="${person.age}"></span></td> 
</tr> 
</table> 

Output:

30 

Hope trợ giúp này

01.
+0

tuyệt vời - vì vậy hãy sử dụng $ {minAge} trong mỗi khối không hoạt động? – gmansoor

+0

tôi đã không cố gắng thành thật: P –

0

Trong bộ lọc chọn, các thuộc tính không đủ tiêu chuẩn liên quan đến phần tử của bộ sưu tập đang được lọc. Nhưng, biến số #root luôn được định nghĩa là đối tượng bối cảnh gốc. Đây là cách bạn có thể tham chiếu đến các biến ở cấp cơ sở từ bên trong bộ lọc lựa chọn.

<tr th:each="artist,rowStat : ${listArtists.?[played gt #root.playedCountReq]}"> 
… 
</tr> 

Tham khảo phần "The #this and #root variables" trong tài liệu Spring EL để biết thêm thông tin.

Các vấn đề liên quan