У меня есть два класса один UserInformation, а другой UserAddress, я добавил класс UserAdress в класс UserInformation, созданный для этого сеттер и getter. И создайте веб-сервис, используя JAX-RS (RESTEasy), но когда я отправляю запрос, используя вызов ajax, он показывает erroe. Мой код следующий.Показать ошибку в jquery ajax call for jax-rs (resteasy)
Это мой UserAddress Класс:
package com.my.DTO;
import java.io.Serializable;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import org.codehaus.jackson.annotate.JsonProperty;
import org.codehaus.jackson.map.annotate.JacksonInject;
@XmlRootElement(name="UserAddress")
public class UserAddress implements Serializable{
private int streetNo;
private String city;
private String state;
private int pinCode;
@XmlElement
public int getStreetNo() {
return streetNo;
}
public void setStreetNo(int streetNo) {
this.streetNo = streetNo;
}
@XmlElement
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
@XmlElement
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
@XmlElement
public int getPinCode() {
return pinCode;
}
public void setPinCode(int pinCode) {
this.pinCode = pinCode;
}
}
Это мой UserInformation Класс: В этом классе я создать и присваиватель для класса UserAddress.
package com.my.DTO;
import java.io.Serializable;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import org.apache.http.entity.SerializableEntity;
import org.codehaus.jackson.annotate.JsonProperty;
@XmlRootElement(name="UserInformation")
public class UserInformation implements Serializable {
private String name;
private int age;
private int roll;
private UserAddress userAdd;
@XmlElement
public UserAddress getUserAdd() {
return userAdd;
}
public void setUserAdd(UserAddress userAdd) {
this.userAdd = userAdd;
}
@XmlElement
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@XmlElement
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@XmlElement
public int getRoll() {
return roll;
}
public void setRoll(int roll) {
this.roll = roll;
}
}
Это мой Resteasy веб-сервис, как для получения и после метода:
package com.my.app;
import javax.jws.soap.SOAPBinding.Use;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.codehaus.jettison.json.JSONObject;
import com.my.DTO.UserAddress;
import com.my.DTO.UserInformation;
import com.my.DTO.UserSuccess;
@Path("/info")
public class ShowUserInfo {
@GET
@Path("/get")
@Produces(MediaType.APPLICATION_JSON)
public UserInformation getProductInJSON() {
UserInformation infoObj = new UserInformation();
UserAddress userAddress=new UserAddress();
userAddress.setCity("New Delhi");
userAddress.setState("Delhi");
userAddress.setStreetNo(447);
userAddress.setPinCode(110092);
infoObj.setName("Ravi Raj");
infoObj.setAge(21);
infoObj.setRoll(101);
infoObj.setUserAdd(userAddress);
return infoObj;
}
@POST
@Path("/post")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response createProductInJSON(UserInformation infoObj) {
return Response.status(200).entity(infoObj).build();
}
}
После мой JQuery Ajax вызова для запроса и опубликовать на веб-службы.
Это мой призыв к ГЭТ:
var uri="http://localhost:8080/WebServiceUsingRESTful/";
var studentData;
function checkWebService(){
$.ajax({
url : uri+"rest/info/get" ,
type : 'GET',
contentType : 'application/json; charset=utf-8',
// request data type
dataType : 'json',
cache: false,
success : function(data, status, req) {
alert("pass calling api");
var responseJsonObj = JSON.parse(req.responseText);
printData(responseJsonObj);
},
error : function(req, status, error) {
alert("Fail calling APi");
},
// set user basic authentication data into request header
/*beforeSend : setHeader*/
});
}
Это рабочие fine.I получили JSon массив. Какой правильный.
Но при отправке данных для обслуживания с использованием этого кода это показывает ошибку.
function insertData(){
var request = new Object();
request.name=$('#userNameFld').val();
request.roll=$('#rollFld').val();
request.age=$('#ageFld').val();
request.userAdd.streetNo=$('#streetFld').val();
request.userAdd.city=$('#cityFld').val();
request.userAdd.state=$('#stateFld').val();
request.userAdd.pinCode=$('#pinFld').val();
$.ajax({
url : uri+"rest/info/post" ,
type : 'POST',
contentType : 'application/json; charset=utf-8',
data : JSON.stringify(request),
// request data type
dataType : 'json',
cache: false,
success : function(data, status, req) {
alert("Api working Fine..!!");
var responseJsonObj = JSON.parse(req.responseText);
$('#insertDivId').show();
},
error : function(req, status, error) {
alert("Fail calling APi");
},
// set user basic authentication data into request header
/*beforeSend : setHeader*/
});
}
Этот вызов показать ошибки для streetNo как это: Uncaught TypeError: Не удается установить свойство «streetNo» неопределенной , но если мы поместили код, подобный этому.
function insertData(){
var request = new Object();
request.name=$('#userNameFld').val();
request.roll=$('#rollFld').val();
request.age=$('#ageFld').val();
request.userAdd{"city":$('#cityFld').val(),"streetNo":$('#streetFld').val(),"state":$('#stateFld').val(),"pinCode":$('#pinFld').val()};
$.ajax({
url : uri+"rest/info/post" ,
type : 'POST',
contentType : 'application/json; charset=utf-8',
data : JSON.stringify(request),
// request data type
dataType : 'json',
cache: false,
success : function(data, status, req) {
alert("Api working Fine..!!");
var responseJsonObj = JSON.parse(req.responseText);
$('#insertDivId').show();
},
error : function(req, status, error) {
alert("Fail calling APi");
},
// set user basic authentication data into request header
});
}
Это работает нормально, но это недействительный способ отправки объекта запроса с использованием вызова ajex.
Просьба ознакомиться с моим кодом и дать мне представление об этой проблеме. Спасибо большое. !! Примечание: Если у кого-то есть хорошая учебная ссылка JAX-RS, добавьте ссылку для меня. Благодаря
Hi..Thanks для предоставления ответа .. Теперь мой апи Вызывающий работает, но если какое-либо решение для стороны веб-службы для удаления этого кода: request.userAdd = {}; , как и любая аннотация или что-либо, потому что, когда я создаю службу для разработчика интерфейса, у них всегда возникает проблема для объявления request.userAdd = {} ;. Если у вас есть какой-либо код или аннотация, чтобы управлять этой штукой со стороны службы, пожалуйста, предоставьте мне. Большое спасибо за ответ. Примечание. Я использую эти «данные: JSON.stringify (request)» для целей сериализации. если у вас есть решение для этого, пожалуйста, предоставьте меня. благодаря – user2346307