# sets.contains из thymeleaf всегда возвращает false - PullRequest
0 голосов
/ 13 февраля 2019

В моем текущем весеннем проекте я пытаюсь отобразить список флажков, которые могут быть проверены в зависимости от значения с сервера.Это HTML-код:

      <tr th:each="credencial : ${credenciais}">
        <td>
          <input type="checkbox" class="form-check-input" th:id="${credencial.id}" th:checked="${#sets.contains(command.credenciais, credencial)}? 'checked': ''" th:attr="data-usuario=${command.id},data-url=@{/usuario/toggle_credencial}" onchange="toggle_credencial(this)"/>
        </td>

        <td>
          <span th:text="${credencial.nome}"></span>
        </td>

        <td>
          <ul>
            <li th:each="autorizacao : ${credencial.autorizacoes}" th:text="${autorizacao.nome}"></li>
          </ul>
        </td>
      </tr>

Но когда я запускаю приложение и открываю эту страницу, флажок не устанавливается, потому что #sets.contains всегда возвращает false.

Класс, который здесь сравнивается,:

@Entity
public class Credencial extends Model {
  @Id
  @GeneratedValue(strategy=GenerationType.IDENTITY)
  private Integer id;

  @Column
  private String nome;

  @OneToMany(fetch = FetchType.EAGER)
  @Fetch(FetchMode.SELECT)
  private List<Autorizacao> autorizacoes;

...

  @Override
  public String toString() {
    return nome;
  }
}

Я реализую метод equals в суперклассе Model:

public abstract class Model extends Object {
  public abstract Object getId();

  public boolean equals(Model object) {
    return toString().equals(object.toString());
  }

  public abstract String toString();
}

Кто-нибудь знает, что здесь не так?

1 Ответ

0 голосов
/ 13 февраля 2019

Атрибут th:checked в Thymeleaf ожидает значение true / false , а не строку.Стоит ли с этим?

th:checked="${#sets.contains(command.credenciais, credencial)}"
...