我有以下代码在控制器中设置变量:
model.set("type", type);
在百里香视图中,我想构造一个带有动作网址的表单:
/mycontroller/{type}
任何想法如何实现这一目标?我没看过百里香的文档。
正如user482745在注释(现在已删除)中建议的那样,我之前建议的字符串连接
<form th:action="@{/mycontroller/} + ${type}">
在某些网络环境下会失败。
Thymeleaf用来LinkExpression解析@{..}表达式。在内部,使用HttpServletResponse#encodeURL(String)。它的javadoc状态
LinkExpression
@{..}
HttpServletResponse#encodeURL(String)
为了进行可靠的会话跟踪,应通过此方法运行servlet发出的所有URL。否则,URL重写不能与不支持Cookie的浏览器一起使用。
在通过URL进行会话跟踪的Web应用程序中,该部分将附加到为发出的字符串@{..}之前,然后${..}附加。你不要这个
${..}
而是使用文档中建议的路径变量
您还可以类似于普通参数,但以路径变量的形式包含参数,但在URL路径中指定一个占位符: <a th:href="@{/order/{id}/details(id=3,action='show_all')}">
您还可以类似于普通参数,但以路径变量的形式包含参数,但在URL路径中指定一个占位符:
<a th:href="@{/order/{id}/details(id=3,action='show_all')}">
所以你的例子看起来像
<form th:action="@{/mycontroller/{path}(path=${type})}"> //adding ending curly brace