【问题标题】:Jersey: get null textbox input valueJersey:获取空文本框输入值
【发布时间】:2013-10-31 18:37:01
【问题描述】:

我想使用 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 post的方法是:

@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 来获取表单参数值。但在这种情况下,该值始终为空。如何从 ajax post 获取表单值? @FormParam 使用正确吗?如果没有,在这种情况下我应该使用什么来获取文本框值?

【问题讨论】:

    标签: java jquery jquery-ui autocomplete jersey


    【解决方案1】:

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

    data: {nameString: request.term}
    

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

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

    我不知道为什么在这种情况下我们不能使用&lt;input&gt; 标签中的name 属性作为@FormParam 的参数。

    【讨论】:

      猜你喜欢
      • 2013-06-07
      • 2012-02-11
      • 2023-03-03
      • 2011-05-04
      • 1970-01-01
      • 2014-09-27
      • 1970-01-01
      • 2022-08-12
      • 1970-01-01
      相关资源
      最近更新 更多