2014-01-09 3 views
0

Я использую тимелеаф с весенним webflow и весной mvc. Я пытаюсь получить URL приложения flowExecutionUrl. Но когда я печатаю flowExecutionUrl в пролете я получаю URL, который, какflowExecutionUrl добавляет дважды при использовании th: тег действия в thymeleaf

/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

Смежные вопросы