我有一个从控制器返回到jsp的arraylist,现在我想使用该arraylist填充数据表。 这是我所做的,但是没有用:
$(document).ready(function() {
//grpAlphaInfoVO is the arraylist returned by my controller
$('#groupAlphaList').dataTable({
"aaData": "${grpAlphaInfoVO}"
});
});
这是我的控制器代码:
@RequestMapping(value = "/groupAlpha/search/{groupName}", method = { RequestMethod.GET, RequestMethod.POST })
public ModelAndView groupAlphaHandler(@PathVariable("groupName") String groupName, HttpServletRequest request) {
ArrayList<GroupAlphaInfoVO> grpAlphaInfoVO = groupAlphaService.loadGroupAlphaSearchResult(groupName);
if(grpAlphaInfoVO != null) {
ModelAndView mav = new ModelAndView("group-alpha");
mav.addObject("grpAlphaInfoVO", grpAlphaInfoVO);
mav.addObject("pageTitle", "Group Alpha");
return mav;
}
}
答案 0 :(得分:0)
首先,您需要将JAVA ArrayList转换为JSON。
为此,您可以使用GSON库。
JAVA代码将列表转换为JSON:
imageIndex--;
myImage.setAttribute("style",imageArray[imageIndex]);
输出:
public class Test {
static class Entry{
String data1;
Entry(String data1){
this.data1 = data1;
}
}
public static void main(String[] args) {
List<Entry> data = new ArrayList<>();
data.add(new Entry("somevalue"));
data.add(new Entry("otherRandomValues"));
String json = new Gson().toJson(data);
System.out.println(json);
}
}
然后需要使用[{"data1":"somevalue"},{"data1":"otherRandomValues"}]
将数据从Servlet传输到JSP,其中<%= grpAlphaInfoVOJSONString %>
是控制器中具有JSON字符串的变量的名称
请参考下面的链接以获得更好的理解:
Transferring data from servlet to jsp page
然后您需要使用JSON来实现数据表,如下例所示:
grpAlphaInfoVOJSONString
$(document).ready(function() {
var grpAlphaInfoVOJSON = [{"column1":"somevalue"},{"column1":"otherValues"}];
//grpAlphaInfoVO is the arraylist returned by my controller
$('#groupAlphaList').dataTable({
"data": grpAlphaInfoVOJSON,
"columns" : [
{ "data" : "column1" }
]
});
});
答案 1 :(得分:0)
编辑:
问题的解决方案:
$('#groupAlphaList').dataTable({
"aaData": ${grpAlphaInfoVO} ,
"aoColumns": [ { "mDataProp": "groupNumber" }, { "mDataProp": "groupName" } ]
});
原始答案:
添加jQuery JavaScipt来调用您的控制器:
http://api.jquery.com/jquery.ajax/
$(document).ready(function() {
$.ajax({
type: "GET",
url: "/groupAlpha/search/groupNameValue",
datatype: 'json',
success: function (response) {
grpAlphaInfoVO = response.grpAlphaInfoVO;
$('#groupAlphaList').dataTable({
"aaData": grpAlphaInfoVO
});
}
});
});
@RequestMapping
定义终点。它声明服务器端代码具有一种可以处理对/ groupAlpha / search / {groupName} URL的请求的方法。这是一个声明,而不是对控制器的实际调用。
任何其他应用程序(Web浏览器,wget,Java应用程序,.NET应用程序,脚本都可以调用使用@RequestMapping声明的端点)。
您的JavaScript代码需要调用控制器。可以使用JQuery $.ajax
函数。
答案 2 :(得分:0)
找到了解决我问题的方法,我们在填充数据表时还需要指定列:
由于我在json中有两个键,分别是groupNumber和groupName,因此我也需要在数据表中包括它们。这是示例代码
$('#groupAlphaList').dataTable({
"aaData": ${grpAlphaInfoVO} ,
"aoColumns": [ { "mDataProp": "groupNumber" }, { "mDataProp": "groupName" } ]
});