Reputation: 14731
I am trying to display JSON data in JSP and I am trying to display JSON data in JSP for the first time.
Data is fetched from database and I have the following code in Servlet
Gson gson = new Gson();
List<Employee> employee = myDAO.getEmpDetails("SMITH");
JsonElement element =
gson.toJsonTree(employee, new TypeToken<List<Employee>>() {
}.getType());
JsonArray jsonArray = element.getAsJsonArray();
response.setContentType("application/json");
response.getWriter().print(jsonArray);
and in JSP I am calling as
$.get('myservlet',function(responseJson) {
if(responseJson!=null){
$("#empTable").find("tr:gt(0)").remove();
var table1 = $("#empTable");
$.each(responseJson, function(key,value) {
var rowNew = $("<tr><td></td><td></td><td></td><td></td><td></td><td></td></tr>");
rowNew.children().eq(0).text(value['empNo']);
rowNew.children().eq(1).text(value['empName']);
rowNew.children().eq(2).text(value['empAddress']);
rowNew.appendTo(table1);
});
}
});
The problem I am having is when I am calling my servlet class I am getting the follwing exception
java.lang.RuntimeException: Missing type parameter.
at com.google.gson.reflect.TypeToken.getSuperclassTypeParameter(TypeToken.java:84)
at com.google.gson.reflect.TypeToken.<init>(TypeToken.java:61)
at test.net.MyService$1.<init>(MyService.java)
at test.net.MyService.doPost(MyService.java:101)
at test.net.MyService.doGet(MyService.java:47)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
How can I resolve this issue?
Upvotes: 0
Views: 680
Reputation: 80603
A quick Google search revealed a possible source for the problems related to use of the TypeToken
class. If you are using ProGuard or a similar compiler tool that removes type information from parameterized classes then it is possible for the token initialization to fail in the way shown. However, while you track down and resolve that issue, it is entirely possible to serialize your data list without using a token:
List<Employee> employee = myDAO.getEmpDetails("SMITH");
String json = new Gson().toJson(employee); // Note use of `toJson` method
response.setContentType("application/json");
response.getWriter().print(json);
This should eliminate any source of error on your servlet side, and as long as your Javascript code works, then you should be good to go.
Upvotes: 1