2016-08-01 174 views
1

我有一個input領域,其價值是由控制器設置由response.query,在模板中我也有執行readdelete呼籲在query進入id兩個環節。這是模板。Thymeleaf:通過輸入文本參數HREF

<div class="input-group"> 
     <input type="text" th:value="*{response.query}" /> 
     <div class="input-group-btn"> 
      <ul class="dropdown-menu dropdown-menu-right"> 
       <li><a href="#" th:href="@{/read/{id}(id=response.query)}">Read</a></li> 
       <li><a href="#" th:href="@{/delete/{id}(id=response.query)">Delete</a></li> 
      </ul> 
     </div> 
</div> 

不幸的是,href參數總是被作爲null通過。是否有替代方法?

+0

這是非常有幫助的 – Hinotori

回答

0

你不能得到response.query,因爲它在客戶端,那麼你就叫它。在你的情況,你需要的JavaScript,這將是構建你的鏈接的URL(othervise你需要一個表單提交的輸入值):

<div class="input-group"> 
    <input type="text" id="myval" th:value="*{response.query}" /> 
    <div class="input-group-btn"> 
     <ul class="dropdown-menu dropdown-menu-right"> 
      <li><a href="#" onclick="onReadClick();" href="#">Read</a></li> 
      <li><a href="#" th:href="@{/delete/{id}(id=response.query)">Delete</a></li> 
     </ul> 
    </div> 
</div> 

<script th:inline="javascript"> 
/*<![CDATA[*/ 
function onReadClick() { 
    var id = $('#myval').value; 
    /*[+ 
    var myUrl = [[@{/read}]] + id; 
    +]*/ 
    window.location.href = myUrl; 
}); 
/*]]>*/ 
</script> 
1

那麼,讓我看看,如果我理解你想要什麼:

例如,您在文本輸入中放置了'5'。現在,你想HREF到:

http://localhost:8080/read/5

而且你有一個控制器,它看起來是這樣的:

@RequestMapping(value="/read/{id}", method=RequestMethod.GET) 
public String read(@PathVariable String id, Model model) { 
    // your logic goes here 
    return "read"; 
} 

首先我的建議是你可以改變從代碼:

<li><a href="#" th:href="@{/read/{id}(id=response.query)}">Read</a></li> 

發送至:

<li><a href="#" th:href="@{/read/{id}(id=${response.query})}">Read</a></li> 
+0

是的,這是正確的我有一個看起來類似的控制器,我想要的是一個輸入文本字段綁定到一個字段和兩個href一個讀取和一個刪除字段值作爲參數這兩種情況。 – v1kas

+1

它的工作原理是:用'th:href =「@ {/ read/{id}(id)替換下面的'th:href =」@ {/ read/{id}(id = response.query)}「 = $ {response.query})}「' –

+0

這就是答案! – Hinotori