在GET中取两个HeaderParam,这是int @HeaderParam的一个奇怪的错误

时间:2016-12-16 10:33:31

标签: java angularjs get header jersey

我在GET REST调用中从js文件发布了两个Headers:

allstaffworking: function(_getstaff){
            var currentToken = _GetToken();

            var Headers = {
                token: currentToken.tokenStaff,
            };
            
            var HeaderId = {
                idtoken: currentToken.idtokenStaff,
            };
            
            
            
            console.log("idtoken"+Headers);

            if (currentToken !== null) {
            $http({  
                        method : 'GET',  
                        headers: Headers, HeaderId,
                        url : REST_URL+'staff/working'
                    }).then(function successCallback(response) {  
                        _getstaff(response)
                    }, function errorCallback(response) {  
                        console.log(response.statusText);  
                    });  
               }  else {
                console.log("NON SEI LOGGATO!!!");
            }
        },

标题是:

 var Headers = {
            token: currentToken.tokenStaff,
        };

        var HeaderId = {
            idtoken: currentToken.idtokenStaff,
        };

这是由REST_URL +'staff / working'调用的java页面:

public List<Staff> getStaff()  
 {  
  List<Staff> listOfStaff=sDao.getAll(Staff.class);
  return listOfStaff;  
 }  
    
    @GET  
    @Path("/working")  
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes("application/json")
    public List<Staff> getWStaff(@HeaderParam("token") String token, @HeaderParam("idtoken") int tokenid) 
 {  
   
    s = (Staff) sDao.getById(tokenid, Staff.class);
    st = (StaffType) sDao.getById(s.getStaffType().getIdstaffType(), StaffType.class);
   
    
    if (ex && st.getIdstaffType()==2){
	    List<Staff> listOfWStaff=stfDao.getAllW();
	    return listOfWStaff;  
    }
    else
    	return null;
 }

将两个标题放在:@HeaderParam("token") String token, @HeaderParam("idtoken") int tokenid 第一个Header Param工作,第二个不起作用,看看这个debug的图像 enter image description here

如何从图像中看到,idtoken的标头值为11。 因此我的java类应该使用第二个@HeaderParman这样的int。但它不起作用,错误500.我尝试以这种方式手动插入“11”:

s = (Staff) sDao.getById(11, Staff.class);

这样它就有效!!然后,错误是当我采用第二个@HeaderParam时,我也尝试使用tokenid作为String,使用Integer.parseint(tokenid)转换它 但它没有改变。 我希望有人可以帮助我

1 个答案:

答案 0 :(得分:0)

$ http config对象的header属性将一个对象作为param,因为你传递了两个对象,它选择了第一个对象。理想情况下你应该传递这样的东西:

$http({
    ...
    headers: {
        token: currentToken.tokenStaff,
        idtoken: currentToken.idtokenStaff
    }
    ...
});

此外,我很好奇为什么你没有得到错误,你提供Headers和HeaderId作为逗号分隔。