В моем текущем весеннем проекте я пытаюсь отобразить список флажков, которые могут быть проверены в зависимости от значения с сервера.Это 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();
}
Кто-нибудь знает, что здесь не так?