EL1008E: die Eigenschaft oder das Feld 'content' gefunden werden kann auf Objekt vom Typ " java.util.ArrayList' - vielleicht nicht öffentlichen oder nicht gültig?
Ich versuche, einfache filter für mein Projekt(Telefonbuch) zu finden können die Nutzer Kontakte, indem Sie Ihre E-Mail anstelle der id. Wenn ich einfach lauch die URL: http://localhost:8080/home/phonebook. Ich bekomme die folgende Fehlermeldung.
Die Fehlermeldung
org.thymeleaf.Ausnahmen.TemplateProcessingException: Ausnahme
Bewertung SpringEL Ausdruck: "Daten.Inhalte" (Vorlage:
"/home/Telefonbuch" - Zeile 29, col 13)Verursacht durch:
org.springframework.Ausdruck.spel.SpelEvaluationException: EL1008E:
Die Eigenschaft oder das Feld 'content' gefunden werden kann auf Objekt vom Typ
'java.util.ArrayList' - vielleicht nicht öffentlichen oder nicht gültig?
HomeController
@RequestMapping(value = {"/home/phonebook"}, method = RequestMethod.GET)
public String showPage(Model model, @RequestParam(defaultValue = "0") int page){
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
User user = userService.findUserByEmail(auth.getName());
model.addAttribute("data",phonebookRepository.findAllByUserEmail(user.getEmail(),PageRequest.of(page,10)));
model.addAttribute("currentPage",page);
return "/home/phonebook";
}
Phonebook.html
<tr th:each="phonebook :${data.content}">
<td th:text="${phonebook.id}"></td>
<td th:text="${phonebook.surname}"></td>
<td th:text="${phonebook.firstname}"></td>
<td th:text="${phonebook.phoneNumber}"></td>
<td>
<a th:href="@{delete/(id=${phonebook.id})}" class="btn btn-danger delBtn">Delete</a>
<a th:href="@{findOne/(id=${phonebook.id})}" class="btn btn-primary eBtn">Edit</a></td>
</tr>
</tbody>
</table>
<hr/>
<ul class="nav nav-pills">
<li class="nav-item" th:each="i: ${#numbers.sequence(0,data.totalPages-1)}">
<a th:href="@{/home/phonebook(page=${i})}" th:text="${i}" class="nav-link"
th:classappend="${currentPage}==${i}?'active':''"></a>
</li>
</ul>
PhonebookRepository
@Repository("phonebookRepository")
public interface PhonebookRepository extends JpaRepository<Phonebook,Integer> {
List<Phonebook> findAllByUserEmail(String email, Pageable pageable);
}
SecurityConfig
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.jdbcAuthentication().dataSource(dataSource)
.usersByUsernameQuery("select email, password, active from users where email=?")
.authoritiesByUsernameQuery("select u.email, r.role from users u inner join user_role ur on(u.user_id=ur.user_id) inner join role r on(ur.role_id=r.role_id) where u.email=?")
.passwordEncoder(passwordEncoder());
}
UPDATE 1
Änderungen <tr th:each="phonebook :${data}">
und ich denke, es behebt es, aber ich habe einen neuen Fehler;
org.thymeleaf.Ausnahmen.TemplateProcessingException: Ausnahme
Bewertung SpringEL Ausdruck:
"#- Nummern.Sequenz(0,data.totalPages-1)" (Vorlage: "/home/Telefonbuch"
- Zeile 42, col 38)Verursacht durch:
org.springframework.Ausdruck.spel.SpelEvaluationException: EL1008E:
Die Eigenschaft oder das Feld 'totalPages' nicht gefunden werden kann auf Objekt vom Typ
'java.util.ArrayList' - vielleicht nicht öffentlichen oder nicht gültig?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ändern
<tr th:each="phonebook : ${data.content}">
zu
<tr th:each="phonebook : ${data}">
Weil Sie wollen, dass zum Durchlaufen der Liste "Abfrage" Ergebnis,aber
data.content
ist nur eine Eigenschaft.ArrayList
,das es nicht die EigenschafttotalPages
werden,also in deinem code<li class="nav-item" th:each="i: ${#numbers.sequence(0,data.totalPages-1)}">
es ist falsch,Sie müssen Sie neu zu schreibenDaten.Inhalt ist nur eine Eigenschaft, eine Schleife durch $Daten statt