gpt4 book ai didi

spring - 如何使用 Thymeleaf 和 Spring Boot 创建动态链接?

转载 作者:行者123 更新时间:2023-12-03 18:35:34 26 4
gpt4 key购买 nike

所以我一直在用 Thymeleaf 和 Spring Boot 在我的计算机上创建一个“网站”,我有一个基本的、不安全的登录,我只是为了好玩。我目前正在尝试做的是创建一个链接,将您带回基于上一页的页面,该链接通过模型作为字符串发送。

以下是一些片段:
在 Controller 中:

@RequestMapping("/")
public String index(Model model) {
return ifLoggedIn(model, "home", "");
}

private String ifLoggedIn (Model model, String location, String returnTo) {
if (Login.loggedIn.getOrDefault(Login.IP(), Boolean.FALSE)) {
return location;
} else {
model.addAttribute("login", new Login());
model.addAttribute("return_page", returnTo);
return "login";
}
}

在 login.html 文件中(登录成功后):
<body>
<a th:href="'/' + ${return_page}">Return to previous location</a>
</body>

编辑:

我首先更改 login.html 文件中的行以遵循 Pau 的建议:
<a th:href="@{'/' + ${return}}">Return to previous location</a>

但是我一直被重定向到 server.local/null,所以我尝试删除 '/' +并且在 ifLoggedIn 参数中有/,所以它会是 return ifLoggedIn(model, "home", "/" ,但这也一直将我发送到 server.local/null。现在,我只是将 login.html 文件中的行更改为以下内容:
<a th:if="(${return_page} != null)" th:with="return=(${return_page})" th:href="@{${return}}">Return to previous location</a> 

现在它消失了,这意味着 ${return_page} 等于 null。回顾 Controller ,我不明白为什么它返回 null。另一件事,我也重定向回其他页面,其中一行说 return ifLoggedIn(model, "messages", "/messages" ,但即使有那些我仍然会被发送到 server.local/null。

最佳答案

您需要使用 @{...} 使用链接表达式这是 Thymeleaf Standard Epression 的类型.在官方文档中,您可以在 9. Using expressions in URLs 部分中看到很多在链接表达式中使用表达式的示例。 :

  • http://www.thymeleaf.org/doc/articles/standardurlsyntax.html

  • No problem! Every URL parameter value is in fact an expression, so you can easily substitute your literals with any other expressions, including i18n, conditionals…:

    ....

    the URL base itself can be specified as an expression, for example a variable expression:

    <a th:href="@{${detailsURL}(id=${order.id})}">



    此外,在本教程中,在 4.4 Link URLs 部分中有一个与您类似的表达式。 :

    URL bases can also be the result of evaluating another expression:

    ...

    <a th:href="@{'/details/'+${user.login}(orderId=${o.id})}">view</a>



    所以在你的情况下,它会像下一个:
    <body>
    <a th:href="@{'/' + ${return_page}}">Return to previous location</a>
    </body>

    关于spring - 如何使用 Thymeleaf 和 Spring Boot 创建动态链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44743317/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com