如何在百里香中打印数组大小?

Posted

技术标签:

【中文标题】如何在百里香中打印数组大小?【英文标题】:How to print Array size in thymeleaf? 【发布时间】:2017-09-14 23:58:52 【问题描述】:

我将 Thymeleafspring mvc 4 一起使用,但是当我想打印列表大小时遇到​​问题

<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>

问题出在th:text="$u.engines&lt;/td&gt;engines 是我的 User 实体中的 ArrayList。我尝试了th:sizeth:list,但没有成功。

谁能帮帮我

已编辑

这是我的User 实体:

@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>();

和我的控制器方法:

@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;

【问题讨论】:

u.engines.size() 不起作用吗? 不,它也没有用 你能添加你的控制器/上下文和模型代码吗? @Charlie 这是我的控制器代码和我声明列表的地方 什么意思?你收到错误了吗?如果你附加一个调试器或记录引擎对象,它里面说的是什么?有尺码吗? 【参考方案1】:

尝试使用org.thymeleaf.expression.Lists的实用方法:

<td th:text="$#lists.size(u.engines)">[Engine Size]</td>

【讨论】:

如何获取内部对象的大小? 你试过 u.engines.someInnerObjectName 吗? 供参考的文档链接在这里:thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#lists 和这里:thymeleaf.org/apidocs/thymeleaf/3.0.13.RELEASE/org/thymeleaf/…【参考方案2】:

除了描述的 util 方法vphilipnyc,使用 list.size() 代替 list.size。

在编写 list.size 时,它​​试图调用 list.getSize() 并且 List(或集合)没有像这样命名的 getter。

【讨论】:

以上是关于如何在百里香中打印数组大小?的主要内容,如果未能解决你的问题,请参考以下文章

如何在百里香中结合 sec:authorize 和 th:if

如何将对象列表绑定到百里香中的复选框?

百里香中的for循环

在百里香中显示项目列表总是出错

我正在尝试根据百里香中 pojo 的 id 获取特定图像

如何使用 Thymeleaf 写入响应标头