查询字符串始终在服务器端

时间:2018-01-09 10:56:15

标签: javascript java jquery tomcat jersey

我在为项目创建API时遇到了一些麻烦。

我的问题如下:

在客户端,我有一个Javascript文件,向我的服务器端发出GET请求。

$("#searchBtn").click(function() {
    $("#snipList").empty();
    var search = $("#tagSearch").val();
    var send = "http://localhost:8081/OhSnip/api/snippets/" + search;
    $.getJSON(send, function(data, status) {
        console.log(data);       
        $.each(data, function(index, value) {
            console.log(value.nome_snippet);
            $("#snipList").append("<div class='snippet'><h1>" + value.nome_snippet + "</h1><br><h3>" + value.classificacao + "/5</h3>");
        });
    });
});

我需要将文本框的内容发送到服务器端。

在服务器端,我有这个

@Path("/snippets")
public class Resource {

    @Path("/{search}")
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public List<Snippet> getSearch(@QueryParam("search") String search) {
        System.out.println(search);
        SnippetManager SM = SnippetManager.getInstance();       
        if (search!=null) {
            return SM.getSnippets(search);
        } else {
            return SM.getSnippets();
        }   
    }
}

我不知道为什么搜索查询总是返回null。

我的JavaScript代码适用于我使用的大多数API,但这是我第一次遇到很多问题。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

您的@QueryParam参数是路径参数,而不是查询参数。

请考虑将@PathParam替换为{{1}}。

答案 1 :(得分:0)

@QueryParam可以从请求URL的Query组件中提取查询参数,如果请求中不存在查询参数,那么该值将是forList的空集合。

实际上,您的search参数是路径参数,因此您需要将@QueryParam替换为@PathParam

我建议您查看文档:{​​{3}}