You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

客户端GET请求传参至JAX-RS服务端时search参数始终为NULL排查

问题解决:Search参数始终为NULL的原因和修复方案

嘿,我一眼就发现问题出在哪啦!你的前端和后端在参数传递的方式上不匹配,导致后端接不到值,具体来说:

问题根源

  • 前端JS里,你把搜索值拼在了URL的路径里:

    var send = "http://localhost:8081/OhSnip/api/snippets/" + search;
    

    举个例子,如果输入的搜索词是java,请求URL会是http://localhost:8081/OhSnip/api/snippets/java,这属于路径参数。

  • 但后端代码里,你用了@QueryParam("search")来接收参数:

    public List<Snippet> getSearch(@QueryParam("search") String search)
    

    这个注解是用来获取查询字符串参数的,也就是URL里像?search=java这种格式的参数,和前端传递的方式完全不对应,所以自然拿到的是null。另外你虽然在@Path("/{search}")里定义了路径参数占位符,但并没有用正确的注解去接收它。

两种修复方案

方案1:修改后端,用@PathParam接收路径参数

把@QueryParam("search")换成@PathParam("search"),这样就能正确读取URL路径里的搜索值了,修改后的后端代码:

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

方案2:修改前端,改用查询字符串传递参数

如果不想改动后端,就调整前端的URL拼接方式,把搜索值放在查询参数里:

$("#searchBtn").click(function() { 
    $("#snipList").empty(); 
    var search = $("#tagSearch").val(); 
    // 把参数改成?search=xxx的格式
    var send = "http://localhost:8081/OhSnip/api/snippets?search=" + 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>"); 
        }); 
    }); 
});

补充说明

你之前的JS在其他API正常工作,应该是那些API的参数传递方式和后端注解是匹配的——要么是用查询参数对应@QueryParam,要么是路径参数对应@PathParam,这次只是不小心前后端没对齐而已~

内容的提问来源于stack exchange,提问作者Rui

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:27:12