连接Th:eleth中的对象中的字符串与Thymeleaf

时间:2019-11-13 17:47:49

标签: java spring thymeleaf

我有一个服务台(带有javaEe,Spring和thymeleaf),向我发送了一个形状如下的目标书:

 public class BookDto   {
  @JsonProperty("id")
  private Long id;

  @JsonProperty("isbn")
  private String isbn;

  @JsonProperty("title")
  private String title;

  @JsonProperty("authors")
  @Valid
  private List<BooksAuthors> authors;
...

我需要从BooksAuthors对象的列表中提取作者姓名,如下所示:

public class BooksAuthors   {
  @JsonProperty("firstName")
  private String firstName;

  @JsonProperty("lastName")
  private String lastName;
...

我想在表中显示有关作者的信息,但我不知道如何用Thymeleaf进行处理。我认为这将是一种分析作者的方法,而在每一种方法都可以分析书本的方法中,但是我无法使其工作。 我想要的结果是

                <table class="table">
                    <thead>
                    <tr>
                        <th scope="col">Titre</th>
                        <th scope="col">Auteur</th>
                        <th scope="col">isbn</th>
                        <th scope="col">Exemplaires disponibles</th>
                    </tr>
                    </thead>
                    <tbody>
                    <tr th:each="book:${books}">
                        <td th:text="${book.getTitle()}"></td>
                        <td>Author1, Author2</td>
                        <td th:text="${book.getIsbn()}"></td>
                        <td>Pas implémenté</td>
                    </tr>
                    </tbody>
                </table>

我设法取得了结果。我试图创建一个var并将其连接起来,但是我仍然必须删除最后一个','。更重要的是,它对我来说看起来很笨拙。

<td>
    <span th:each="author:${book.getAuthors()}"
          th:with="authorName=${author.getFirstName()} + ' ' + ${author.getLastName()} + ', '"
          th:text="${authorName}">
    </span>
</td>

我想知道是否有更好,更简单的解决方案?还是应该在我的业务层而不是在百里香里做? 非常感谢!

1 个答案:

答案 0 :(得分:0)

我想您可以为此使用迭代状态对象:

https://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#keeping-iteration-status

要做这样的事情:

public ICommand ListSelectionChangedCommand { get; set; }
 private void FlashImageForSelectedRow(InnerGridItems obj)
        {
         //Gives an exception that it cannot type cast to InnerGridItems.
        }