我正在使用带有Spring webflow和spring mvc的thymeleaf。我正在尝试获取应用程序URL
flowExecutionUrl
。但是当我在span中打印flowExecutionUrl
时,我会得到类似
/SWF/loginflow.htm?execution=e2s1
但是当我在th:action
中传递相同内容时,我的项目名称被附加了两次。喜欢这个
/SWF/SWF/loginflow.htm?execution=e2s1
下面是我的代码
<!DOCTYPE html SYSTEM "http://www.thymeleaf.org/dtd/xhtml1-strict-thymeleaf-spring3-3.dtd">
<html xmlns:th="http://www.thymeleaf.org">
<body>
<div>
<div style="width: 1330px; height: 100px;">
<div id="header" th:include="'/header'::headerfream"></div>
</div>
<div style="width: 1330px; height: 500px; position: absolute; top: 110px;">
<form action = "#" th:action="@{${flowExecutionUrl}}" method="POST">
<div>
<table>
<tr><td><span th:text="${flowExecutionUrl}"></span></td></tr>
<tr>
<td>
<p>User Name</p>
</td>
<td>
<input type="text" name="name" id="name" />
</td>
</tr>
<tr>
<td>
<p>Password</p>
</td>
<td>
<input type="password" name="password" id ="password" />
</td>
</tr>
<tr>
<td>
<input type="submit" value="submit"/>
</td>
</tr>
</table>
</div>
</form>
</div>
</div>
</body>
</html>
答案 0 :(得分:0)
th:action
使用@{...}
语法重写URL。由于flowExecutionUrl
以/
开头,因此相对于应用程序的上下文根重写URL。上下文路径/SWF
前置于URL。
该范围不使用此@
语法,因此只会写入flowExecutionUrl
的原始值。
您应该从flowExecutionUrl
中删除上下文路径,并让Thymeleaf使用@
语法添加上下文路径,这样您的应用程序就不依赖于上下文路径。
答案 1 :(得分:0)
<form id="myForm" th:action="${flowExecutionUrl}"
th:object="${userDetail}" method="post">
<input type="hidden" name="_eventId" value="loginCredentialsEntered" />
我的行动将是
/SWF/loginflow.htm?execution=e3s2_eventId=loginCredentialsEntered
答案 2 :(得分:0)
找到了这个答案here:
它非常适合webflow和thymeleaf。
使用服务器相对URL,如下所述:http://www.thymeleaf.org/doc/html/Using-Thymeleaf.html#link-urls
这看起来像是:
:href =“@ {'〜'+ $ {flowExecutionUrl}}”