使用 AngularJS 无法通过 REST API 获取参数

我正在尝试通过GET请求将单个参数传递给服务器。我可以在浏览器中看到GET带有“已加载”参数的请求正确并成功发送。问题是在服务器端没有成功转换成对象。请求失败,因为参数中的对象为空,因此引发异常。该应用程序是一个我计划使其可动态加载的表。当您到达站点的末尾时,接下来的 25 个条目应该加载一个GET请求,以及已经加载了多少条目的计数作为参数。


服务器端


import java.util.ArrayList;

import java.util.List;


import javax.ws.rs.Consumes;

import javax.ws.rs.GET;

import javax.ws.rs.POST;

import javax.ws.rs.PUT;

import javax.ws.rs.Path;

import javax.ws.rs.Produces;

import javax.ws.rs.core.MediaType;


@Path("/hello")

public class Hello {


TableUtils tu = new TableUtils();


@GET

@Consumes(MediaType.APPLICATION_JSON)

@Produces(MediaType.APPLICATION_JSON)

public List<Eintrag> fetchEntries(String loaded) {

    List<KeyEntry> entries = tu.getEntries();

    Integer entriesLoaded = Integer.parseInt(loaded);


    if(entries.size() > (entriesLoaded+25)) {

        entries = entries.subList(entriesLoaded, entriesLoaded + 25);

    }

    else if(entries.size() == (entriesLoaded+25)){

        entries.clear();

    }

    else {

        entries = entries.subList(entriesLoaded, entries.size());

    }


    return convert(entries);

}


@PUT

@Consumes(MediaType.APPLICATION_JSON)

@Produces(MediaType.APPLICATION_JSON)

public String add(final Eintrag input) {

    if(input.getlKey()!= "" && input.getOs() != "" && 

tu.addEntry(input.getOs(), input.getlKey()))

        return "success";

    else

        return "error";

}


private List<Eintrag> convert(List<KeyEntry> entries) {

    List<Eintrag> eintraege = new ArrayList<Eintrag>();

    for (KeyEntry entry : entries) {

        Eintrag eintrag = new Eintrag();

        eintrag.setId(entry.getId());

        eintrag.setOs(entry.getOs());

        eintrag.setlKey(entry.getlKey());

        eintraege.add(eintrag);

    }

    return eintraege;

}

}

控制器


angular.module("keyDB", []).controller("Entries", function($scope, $http){

$http.get("http://localhost:8080/keyDBmaven/rest/hello",{params : {loaded : 

"0"}}).then(function(response){

    $scope.keys = response.data;

});

});

这也始终为空。


我在这个问题上坐了很长时间,所以非常感谢解决方案。


凤凰求蛊
浏览 168回答 1
1回答

郎朗坤

您的“加载”参数是查询参数,要从带有 Jax-Rs 实现的请求中获取它,您需要使用 @QueryParam("param_name") 注释。所以你的电话应该看起来像@GET@Consumes(MediaType.APPLICATION_JSON)@Produces(MediaType.APPLICATION_JSON)public List<Eintrag> fetchEntries(@QueryParam("loaded") String loaded) {&nbsp; &nbsp; ...}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java