2013-10-22 97 views
0

我想要使用jQuery的自動完成來執行以下操作:當用戶在文本框中鍵入文本時,他將看到從服務器獲取的可能單詞列表。我的HTML代碼是一個簡單的文本框:Jersey:得到null文本框輸入值

<label for="customer-name">Enter customer names: </label> 
<input type="text" id="customer-name" name="customer-name"/> 

的JavaScript代碼來發送和從服務器獲取數據的jQuery UI的autocomplete和jQuery AJAX功能實現:

$(function() { 
    $("#customer-name").autocomplete({ 
    source: function(request, response) { 
     $.ajax({ 
     url: '../account/customer-view', 
     type: 'POST', 
     contentType: 'application/json', 
     dataType: 'json', 
     data: request.term, 
     success: function(data) { 
      response($.map(data, function(item) { 
      return item; 
      })); 
     } 
     }); 
    } 
    });  
}); 

我的後臺是使用Java新澤西州的網站服務。處理AJAX後的方法是:

@Path("customer-view") 
@POST 
@Consumes(MediaType.APPLICATION_JSON) 
@Produces(MediaType.APPLICATION_JSON) 
public Response getCustomerInfo(@FormParam("customer-name") String partialName) { 
    // ... code to use partialName 
} 

然而,當我開始了我的應用程序和調試它,我發現,當我在文本框中,例如「C」在文本框中輸入一個字母時,變量partialName沒有從@FormParam注入中獲得值「C」並且它是null。通常我總是通過使用@FormParam來獲取表單參數值。但在這種情況下,該值始終爲空。我如何從ajax post獲取表單值? @FormParam是否正確使用?如果不是,在這種情況下我應該使用什麼來獲取文本框的值?

回答

0

我得到了答案。在AJAX請求,發送到服務器的數據應該以一個對象作爲被封裝:

data: {nameString: request.term} 

然後在服務器側,使用nameString作爲@FormParam註釋的參數:

public Response getCustomerInfo(@FormParam("nameString") String partialName) { 
} 

我不知道爲什麼在這種情況下我們不能使用<input>標籤中的name屬性作爲@FormParam的參數。