2014-09-05 2 views
0

값이 HTTP 요청에 있어도 내 웹 서비스로 전송되는 데이터가 null 인 이상한 문제가 있습니다. 다음은 아약스 및 휴식입니다.웹 서비스 매개 변수가 null입니다.

$("#updateProfileInfo").click(function(e){ 
    e.preventDefault(); 
    var jobb = $("#jobbEditBox").val(); 
    var bostad = $("#bostadEditBox").val(); 
    var intressen = $("#intresseEditBox").val(); 
    alert(jobb); 
    alert(bostad); 
    alert(intressen); 
    $.ajax({ 
     type: "post", 
     url: "http://localhost:8080/fakebook/fakebookrest/UserInfoService/json/edituserprofile", 
     data: { 
      "jobb" : jobb, 
      "bostad" : bostad, 
      "intressen" : intressen 
     }, 
     success: function(data){ 
      var jsonData = $.parseJSON(data); 
      alert(jsonData); 
     } 
    }); 
}); 



@POST 
@Path("/json/edituserprofile") 
@Consumes(MediaType.APPLICATION_FORM_URLENCODED) 
@Produces(MediaType.APPLICATION_JSON) 
public boolean produceJSON(
     @QueryParam("jobb") String rawJobText, 
     @QueryParam("bostad") String rawCityText, 
     @QueryParam("intressen") String rawIntresseText, 
     @Context HttpServletRequest request) 
{ 
    System.out.println(rawJobText); 
    User user = (User) request.getSession().getAttribute("user"); 
    System.out.println(""+user.getId()); 
    if(user != null) 
     return userFacade.editProfileInformation(user.getId(), rawJobText, rawCityText, rawIntresseText); 
    else 
     return false; 
} 

다른 모든 것은 정상적으로 작동하며 오류가 없습니다. 콜백 함수도 호출됩니다. 문제는 System.out.println(rawJobText);의 값이 null이라는 것입니다.

답변

0

당신은

+0

왜 설명해 주시겠습니까? 이제 알았어. POST 메서드는 formparam에서만 작동합니다. –

0

솔직히 대신 @QueryParam의 @FormParam를 사용해야합니다, 당신은 반드시 @FormParam를 사용할 수 없습니다. 방화벽으로 가서 웹 서비스가있는 포트에 연결할 수 있습니다. 포트를 허용함으로써 방화벽은 더 이상 데이터 액세스를 차단하지 않습니다. 이는 웹 서비스가 정확하다는 확신이 있으면 작동 할 것입니다. Postman을 사용하여 웹 서비스를 테스트하고 반환 할 값을 볼 수 있습니다.

관련 문제