Jersey:获取null文本框输入值

时间:2013-10-22 18:26:11

标签: java jquery jquery-ui autocomplete jersey

我想使用jQuery的自动完成功能执行以下操作:当用户在文本框中键入文本时,他将看到从服务器获取的可能单词列表。我的HTML代码是一个简单的文本框:

<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 Jersey的Web服务。处理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没有得到值“ C“来自@FormParam注射,它是null。通常我总是使用@FormParam获取表单参数值。但在这种情况下,该值始终为null。如何从ajax帖子中获取表单值? @FormParam是正确使用的吗?如果没有,在这种情况下我应该使用什么来获取文本框值?

1 个答案:

答案 0 :(得分:0)

我得到了答案。在AJAX请求中,发送到服务器的数据应封装在对象中:

data: {nameString: request.term}

然后在服务器端,使用nameString作为@FormParam注释的参数:

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

我不知道为什么我们不能在name标记中使用<input>属性作为@FormParam的参数。