当前位置: 首页 > 知识库问答 >
问题:

Thymeleaf构造带有变量的URL

赫连泰宁
2023-03-14

我在控制器中设置变量的代码如下:

model.set("type", type);

在thymeleaf视图中,我想用action url构建一个表单:

/mycontroller/{type}

有什么想法如何实现这一点?我读过thymeleaf留档没有运气。

共有3个答案

万俟棋
2023-03-14

您需要在@{}内连接字符串。

<form th:action="@{'/mycontroller/' + ${type}}">

@{}用于URL重写。URL重写的一部分是跟踪会话。用户第一次请求URL时,应用服务器将添加到URL;jsessionid=somehexvalue并使用jsessionid生成cookie。当客户端在下一个请求期间发送cookie时,服务器知道客户端支持cookie。若服务器知道客户端支持cookie,服务器将不会在URL中保留addind jsessionid。

我首选的方法是使用管道语法(|)进行文字替换。

<form th:action="@{|/mycontroller/${type}|}">

Thymeleaf路径变量语法为

<form th:action="@{/mycontroller/{pathParam}(pathParam=${type}}">

参考:Thymeleaf标准URL语法

邵凯定
2023-03-14

如果您不想使用字符串连接(由Sotirios提出),可以在URL链接中使用表达式预处理:

<form th:action="@{/mycontroller/__${type}__}">
陶炫明
2023-03-14

正如user482745在注释(现在已删除)中所建议的,我先前建议的字符串连接

<form th:action="@{/mycontroller/} + ${type}">

会在某些web上下文中失败。

Thymeleaf使用LinkExpression解析@{..} 表达式。在内部,它使用HttpServletResponse#encodeURL(字符串)。它的javadoc声明

对于健壮的会话跟踪,servlet发出的所有URL都应该通过此方法运行。否则,URL重写不能用于不支持cookie的浏览器。

在通过URL完成会话跟踪的Web应用程序中,在附加${...}之前,该部分将附加到为@{...}发出的字符串中。你不会想要这个的。

相反,按照留档中的建议使用路径变量

您还可以包括路径变量形式的参数,类似于普通参数,但在URL路径中指定占位符:

<a th:href="@{/order/{id}/details(id=3,action='show_all')}">

因此,您的示例如下所示

<form th:action="@{/mycontroller/{path}(path=${type})}"> //adding ending curly brace

 类似资料:
  • 问题内容: 我有以下代码在控制器中设置变量: 在百里香视图中,我想构造一个带有动作网址的表单: 任何想法如何实现这一目标?我没看过百里香的文档。 问题答案: 正如user482745在注释(现在已删除)中建议的那样,我之前建议的字符串连接 在某些网络环境下会失败。 Thymeleaf用来解析表达式。在内部,使用。它的javadoc状态 为了进行可靠的会话跟踪,应通过此方法运行servlet发出的所

  • 我使用Thymeleaf作为模板引擎,通常输出如下可变值: 在Java I集合中: 并在html模板中输出: 这很好,但我想输出一个变量,而不需要标记。以下内容将非常好: 不幸的是,它不起作用。我的目标是避免不必要的标签输出变量值。这可能与Thymeleaf有关吗?

  • 我正在尝试创建一个概念验证Spring Boot应用程序,它利用Thymeleaf根据属性和请求参数填充字符串结构。我让它使用Model实现工作,但只有当填充的模板是响应时才有效。在这种情况下,我希望在项目中使用填充的模板。 百里香服务非常简单。 POM.xml 下面是模板: 我最终从地图上得到的是: 但我最终从map2得到的是: 我尝试过在< code>Context中设置属性,在< code

  • 我正在研究如何将自定义构造与SnakeYAML一起使用,但不确定如何实现嵌套。我用这个例子作为参考。 在链接的示例中,相关的YAML和构造是, 现在,让我们将YAML更改为, 我想使用另一个来解析对象,但要在上下文中进行。我对关系的理解非常不稳定,我对如何在自定义构造函数中使用自定义构造函数感到困惑。有什么想法或资源吗?

  • 所以我试图用th: href重定向整个网址,但它添加了我不想要的字符。 我现在的网址是这个 我试图回到帖子的一部分,那就是 所以现在这就是我的html的样子 这是我得到的网址 Id是正确的,但我不确定为什么

  • 问题内容: 我正在尝试使用NSLocalizedString本地化我的应用程序。当我导入XLIFF文件时,大多数工作都像一个超级按钮,但是有些却没有,有些字符串没有本地化。我注意到问题出在NSLocalizedString中,其中包含一些变量,例如: 要么 也许这不是这类东西的正确语法。有人可以向我解释如何迅速做到这一点?非常感谢你。 问题答案: 您可以在中使用format参数,因此您的示例如下所