Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to print Array size in thymeleaf?

Tags:

I'm using Thymeleaf with spring mvc 4 but I have a problem when I want to print a list size

<tr th:each="u : ${users}" th:id="${u.username}" class="odd gradeX">     <th></th>     <td th:text="${u.username}"></td>     <td th:text="${u.email}"></td>     <td th:switch="${u.enabled}">         <span th:case="true" class="badge badge-primary">Acitf</span>         <span th:case="false" class="badge badge-danger">Désactivée</span>         <span th:case="*" class="badge badge-dark">Inconnue</span>     </td>     <td th:switch="${u.roles}">         <span th:case="ROLE_SUPER_ADMIN">Super ADmin</span>         <span th:case="ROLE_MANGER">Manager</span>         <span th:case="ROLE_SUPERVISEUR">Superviseur</span>         <span th:case="ROLE_USER">User</span>         <span th:case="*">Inconnue</span>      </td>     <td th:text="${#calendars.format(u.creationDate,'dd/MM/yyyy hh:mm')}"></td>     <td th:text="${#calendars.format(u.lastLogin,'dd/MM/yyyy hh:mm')}"></td>     **     <td th:text="${u.engines}"></td>     <td th:text="${u.subordonnes}"></td>     **     <td></td> </tr> 

the problem is here th:text="${u.engines}</td>. engines is an ArrayList in my User entity. I tried th:size and th:list but it didn't work.

Can anyone help me please

Edited

here is my User entity:

@OneToMany(mappedBy = "superieur") @JsonIgnore private List<User> subordonnes = new ArrayList<User>();  @ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL) @JoinTable(name = "USERS_ENGINES", joinColumns = @JoinColumn(name = "USER_ID"), inverseJoinColumns = @JoinColumn(name = "NUM_EQUIPMENT")) @JsonIgnore private List<Engine> engines = new ArrayList<Engine>(); 

and my Controller method:

@RequestMapping(value = {"/listeUsers"}) public ModelAndView userlistePage() {     ModelAndView model = new ModelAndView();     User logedUser = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();          List<User> users = new ArrayList<User>();     users = userService.findUserSub(logedUser);     model.addObject("users", users);     model.setViewName("utilisateur/list_users");     return model; } 
like image 367
W.Ahmed Avatar asked Apr 19 '17 00:04

W.Ahmed


People also ask

How do I get a list index in Thymeleaf?

In Thymeleaf, we use th:each attribute for iteration. Thymeleaf th:each allows you to declare an iteration status variable. The employeeStat is the aggregation of the variable employee with the suffix Stat.


1 Answers

Try using the utility method for org.thymeleaf.expression.Lists:

<td th:text="${#lists.size(u.engines)}">[Engine Size]</td> 
like image 97
vphilipnyc Avatar answered Oct 21 '22 11:10

vphilipnyc