SpringプロジェクトとThymeleafプロジェクトを開発中です。 私は、サーバーに格納されているピクチャのStringを格納する作業クラスを使用してユーザーを構成しました。 正常に動作し、メインブロックで正常に呼び出せます。私のプロジェクトの上部には、htmlのヘッダー部分に記述されているナビゲーションパネルがあります。 layout.html:SpringとThymeleafを使用したJavaプロジェクトのヘッダーセクションのユーザー画像
<!DOCTYPE HTML>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity4">
<head th:include="fragments/head" th:with="pageTitle='Java Project'"></head>
<body>
<header th:include="fragments/header"></header>
<main th:include="${view}"></main>
<footer th:include="fragments/footer"></footer>
<span th:include="fragments/scripts-bundle"></span>
</body>
</html>
今は正常に設けられた上部コードに従って、ビューの変数が定義されているメインブロック内user.pictureを呼び出す完全なHTMLは次のようになります。これは、メインブロックで図
:これは実施例である
……
<th:block th:each="user : ${users}">
<tr th:class="${user.isAdmin() ? 'info' : null}">
…………
<td> <img class="img-circle" th:src="@{/images/users/{picture}(picture=${user.picture})}" height="43" width="43"/></td>
………
</tr>
</th:block>
……
ビューは、コントローラ内のコードのこの部分によって呼び出される:
@GetMapping("/")
public String listUsers(Model model){
List<User> users = this.userRepository.findAll();
model.addAttribute("users", users);
model.addAttribute("view", "admin/user/list");
return "layout";
}
ユーザクラスIで持っている:
….
private String picture;
public String getPicture() {
return picture;
}
public void setPicture(String picture) {
this.picture = picture;
}
…..
すべてがうまくいきます。
私はビューのように同じコードを呼び出すが、ナビゲーションパネルが記述されているフラグメント/ヘッダーセクションでこれを行う。 これは正常に実行できません。
1/thymeleafビューでコントローラのコードによってユーザーを注入:全てとロックでは動作しません
@GetMapping("/fragments/header")
@PreAuthorize("isAuthenticated()")
public String setPicHead(Model model){
UserDetails principal = (UserDetails) SecurityContextHolder.getContext()
.getAuthentication()
.getPrincipal();
User user = this.userRepository.findByEmail(principal.getUsername());
model.addAttribute("user", user);
model.addAttribute("fragments/header", user);
return "fragments/header";
}
In the fragments/header html I added:
<li sec:authorize="isAuthenticated()">
<img class="img-circle" th:src="@{/images/users/(picture=${user.picture})}" height="43" width="43"/>
</li>
: のようなものを試してみました、私はこれを行うための2つの方法を参照してください、私のささやかな知識を1として Project全体
2/2番目のアプローチは、Thymeleaf機能を使用してユーザーを個別に呼び出す方法です。 Thymeleafはフルエンジン機能を備えているので、 これを行うことができます。
誰でも私にこれを手伝ってもらえますか? ありがとうございます。