我正在开发一个从我的数据库中提取数据(消息)并返回所有消息的宁静Web服务!
每条消息都是一个MsgBean(带有id,contenu,from,numexp,...)
Web服务无法返回表,因此我创建了一个包含MsgBean的表(msgTable)的新对象!
在其余控制台上运行我的Web服务时,出现此错误:
Etat HTTP 500 - java.lang.NullPointerException
输入Rapport d''exception
message java.lang.NullPointerException
描述Le serveuranrencontréuneerreur interne qui l''aempêchédesatisfairelarequête。
Click to see the rest of error
我的MsgBean是:
@XmlRootElement
public class MsgBean implements Serializable {
private static final long serialVersionUID = 1L;
private int id;
private String frommm;
private String contenu;
private String DateEnvoi;
private String NumExp;
private int idu;
public MsgBean(){};
@XmlElement
public int getIdu() {
return idu;
}
public void setIdu(int idu) {
this.idu = idu;
}
@XmlElement
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@XmlElement
public String getFrommm() {
return frommm;
}
public void setFrommm(String frommm) {
this.frommm = frommm;
}
@XmlElement
public String getContenu() {
return contenu;
}
public void setContenu(String contenu) {
this.contenu = contenu;
}
@XmlElement
public String getDateEnvoi() {
return DateEnvoi;
}
public void setDateEnvoi(String DateEnvoi) {
this.DateEnvoi = DateEnvoi;
}
@XmlElement
public String getNumExp() {
return NumExp;
}
public void setNumExp(String NameExp) {
this.NumExp = NameExp;
}
}
我的msgTabl是:
@XmlRootElement
public class msgTabl implements Serializable {
String test;
MsgBean[] m = new MsgBean[100];
public msgTabl(){};
@XmlElement
public String getTest() {
return test;
}
public void setTest(String test) {
this.test = test;
}
@XmlElement
public MsgBean getM(int i) {
return m[i];
}
public void setM(int i, MsgBean mb) {
this.m[i].setId(mb.getId());
this.m[i].setIdu(mb.getIdu());
this.m[i].setFrommm(mb.getFrommm());
this.m[i].setNumExp(mb.getNumExp());
this.m[i].setDateEnvoi(mb.getDateEnvoi());
this.m[i].setContenu(mb.getContenu());
}
}
这是我测试的网络服务:
@GET
@Path("/historiquemethod")
@Produces("application/json")
//@Produces("text/plain")
public msgTabl historique(
@QueryParam("pseudo") String pseudo,
@QueryParam("motDePasse") String motDePasse
) {
msgTabl tab = new msgTabl();
MsgBean ms = new MsgBean();
// set information into our msg to test
ms.setContenu("contenu");
ms.setFrommm("8080");
ms.setNumExp("2584126");
ms.setId(1);
ms.setIdu(2);
ms.setDateEnvoi("date");
// set the message into the first table case
tab.setM(0, ms);
tab.setTest("ok");
return tab;
}
答案 0 :(得分:1)
在setM
方法中,请在第一行中执行此操作:
this.m[i] = new MsgBean();
问题是你已经实例化了你的数组,但是该数组中的对象是null。因此,您需要首先在所需索引处实例化对象,然后使用它。
评论更新
为此类getM()
创建一个getter方法,并使用XmlElement
对其进行注释(从当前重载的getM(int i)
方法中删除注释)。 JAXB无法使用方法getM(int i)
,因为jaxb需要为您的属性提供简单的getter和setter。