2014-01-09 65 views
0

我使用的是帶有Spring webflow和spring mvc的thymeleaf。我正試圖通過 flowExecutionUrl獲得應用程序URL。但是,當我在跨度打印flowExecutionUrl我收到的網址就是喜歡flowExecutionUrl在thymeleaf中使用th:action標籤時追加兩次

/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

謝謝湯姆的回答。我找到了解決辦法

<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

0

th:action使用@{...}語法,它重寫URL。由於flowExecutionUrl/開頭,所以URL將相對於應用程序的上下文根重寫。上下文路徑/SWF被預置爲該URL。

跨度不使用此語法,因此只寫入原始值flowExecutionUrl

您應該從flowExecutionUrl中刪除上下文路徑,並讓Thymeleaf使用@語法預先設置上下文路徑,以便您的應用程序不依賴於上下文路徑。

來源:Thymeleaf Standard URL syntax