Thymeleaf-构造URL,不带字符串隐藏

时间:2018-12-19 16:02:14

标签: html spring thymeleaf

在使用分布式服务时,我需要以下格式: baseUrl/path因此,将变量用作参数将不可行。

我得到了以下代码:

@GetMapping(HOME)
public String showHomeView(@PathVariable Integer cartId, Model model){
    Integer customerId = cartRequestComponent.getCustomerIdByCartId(cartId);
    Customer customer = getCustomerById(customerId);
    model.addAttribute("articleServiceBaseUrl", articleServiceBaseUrl);
    return "home";
}

和href:

<a th:href="${articleServiceBaseUrl}/article/addArticle">Add article</a>

也尝试过:

<a th:href="${articleServiceBaseUrl}+/article/addArticle">Add article</a>

并且:

<a th:href="__${articleServiceBaseUrl}__/article/addArticle">Add article</a>

并且:

<a th:href="__${articleServiceBaseUrl}__+/article/addArticle">Add article</a>

此方法有效,但我不愿使用,因为我得到的网址越长,变量又越少

<a th:href="${articleServiceBaseUrl}+'/article/addArticle'">Add article</a>

对于其他人来说,这很好用:

/customer/home/__${cart.cartId}__">home</a>

如何在不使用'的情况下注入变量?

2 个答案:

答案 0 :(得分:1)

您可以使用literal substitution,因此不必使用引号。如果这样做,您的表情将如下所示:

<a th:href="|${articleServiceBaseUrl}/article/addArticle|">Add article</a>

|/customer/home/${cart.cartId}|

话虽如此,大多数情况下都应使用标准url表达式。

|/customer/home/${cart.cartId}|

可以表示为

@{/customer/home/{cart}(cart=${cart.cartId})}

@{...}表达式确实支持到其他服务器/主机的链接,但是如果这样做,它们必须以http://https://开头。

答案 1 :(得分:0)

您可以使用@批注,例如,它可以在很多情况下使用: 客户主页 希望这个答案能回答您的问题