java - 在 Thymeleaf 中将参数主机名与文字 url 组合

标签 java thymeleaf template-engine

我试图让 Thymeleaf 为我构建一个 URL,其中域部分是一个参数,一些片段是一个文字字符串,并且查询参数也被参数化。

documentation提供了一些例子:

@{${myDomain}/literalUrl}
@{${myDomain}'/literalUrl'}
@{/literalUrl(query=${queryValue})}
@{'/literalUrl'(query=${queryValue})}
@{${myDomain}(query=${queryValue})}

甚至

<a th:with="baseUrl=${myDomain}" th:href="@{${baseUrl}}(query=${queryValue})}">

单独来看,所有这些都运行良好。但是如果我尝试将它们组合起来,域部分突然拒绝解析:

@{${myDomain}/literalUrl(query=${queryValue})}@{${myDomain}+'/literalUrl'+(query=${queryValue} )} 每个解析为 ${myDomain}/literalUrl?query=queryValue,和

如何让 Thymeleaf 正确生成我的 url https://example.com/literalUrl?query=queryValue

最佳答案

不知道这是否是您问题的合法解决方案,但如果您将 literalUrl 与第一个参数连接起来,它将起作用。缺点:您需要一个额外的模型参数。

<a th:href="@{${linkData+path}(q=${queryParam})}">some link</a>

得到

<a href="https://example.com/literalUrl?q=queryValue">some link</a>

模型参数:

mv.addObject("linkData", "https://example.com");
mv.addObject("path", "/literalUrl");
mv.addObject("queryParam", "queryValue");

关于java - 在 Thymeleaf 中将参数主机名与文字 url 组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39452150/

相关文章:

spring-mvc - 如何使用 spring mvc 访问 thymeleaf 模板中的变量

node.js - express-handlebars、express-hbs 和 hbs 模块有什么区别,

javascript - KnockoutJS - 在父标记中绑定(bind)子组件的点击事件

java - MapDB在创建CircularQueue时不接受Serializer

java - 将 Map<Object, Object> 转换为 Json 字符串

java - 从void返回字符串

java - 如何用引号在 Thymeleaf 问题中添加 <i class ="something"></i>

html - 如何使用 Spring 和 Thymeleaf 显示没有 html 标签的消息

java - 使用 Mustache 模板请求转发到 spring boot mvc 中的另一个 url

java - 在企业 Java 应用程序中,SQL 位于何处?