原创

コントローラ変数の値が Thymeleaf フラグメントに表示されない

温馨提示:
本文最后更新于 2024年04月12日,已超过 47 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

そこで、Java、JavaScript、Thymeleafを使用するSpring Bootプロジェクトがあり、私がやっていることは、文字列値を取得して、さまざまなページに挿入するナビゲーションバーのフラグメントに表示することです。 .out、変数「loggedInUsername」が正しい値を保持していることを確認できます。私が読んだどこでも、これが正しいはずだと書いていますが、ナビゲーションバーには値が表示されません。 ..

これが私のLoginController.javaです

package com.msu.ctap.Controllers;

import com.msu.ctap.Service.LoginService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.view.RedirectView;

@Controller
public class LoginController {

    private final LoginService loginService;

    @Autowired
    public LoginController(LoginService loginService) {
        this.loginService = loginService;
    }

    @GetMapping("/login")
    public String loginPage() {
        return "login";
    }

    @PostMapping("/loginUser")
    public ModelAndView loginUser(@RequestParam("usernameOrEmail") String usernameOrEmail, @RequestParam("password") String password) {
        boolean loginSuccessful;

        loginSuccessful = loginService.loginUser(usernameOrEmail, password);

        String loggedInUsername = loginService.emailUsername(usernameOrEmail);

        ModelAndView modelAndView;
        if (loginSuccessful) {
            modelAndView = new ModelAndView(new RedirectView("/upload"));
            System.out.println(loggedInUsername); //<--- Shows correct value
            modelAndView.addObject("loggedInUsername", loggedInUsername);
        } else {
            modelAndView = new ModelAndView("login");
            modelAndView.addObject("error", "Login failed. Please check your username/email and password.");
        }
        return modelAndView;
    }

}

これが私のThymeleaf断片navbar.htmlです:

<div th:fragment="navbar">
    <nav>
        <ul>
            <li><a th:href="@{/about}">Devs</a></li>
            <li><a th:href="@{/upload}">Upload</a></li>
            <li><a th:href="@{/home}"><span class="nav-title">CTAP</span></a></li>
            <li><a th:href="@{/images}"}>Images</a></li>
            <li><a th:href="@{/help}">Help</a></li>
            <li>Welcome, <!--/*@thymesVar id="variableName" type="java.lang.String"*/-->
            <span th:text="${variableName}">!</span></li>
        </ul>
        <div class="hamburger-menu-icon">☰</div>
    </nav>
</div>

私の出力は次のとおりです。出力

私のプロジェクト構造は次のとおりです。構造

ModelAndView.addObject() を試して、ナビゲーション バーの外部のアップロード ページで Thymeleaf 変数挿入を使用してみました。 コントローラーが HTML フラグメントと通信できないような気がします

正文到此结束
热门推荐
本文目录