Struts2结合Bootstrap-Table分页的使用
2017-12-17 14:11
1001 查看
Bootstrap-Table官网:http://bootstrap-table.wenzhixin.net.cn/
Bootstrap Table参数文档:http://bootstrap-table.wenzhixin.net.cn/documentation/
概述:
最近需要用到分页设置,并且是在struts2下,所以话不多说了。使用Bootstrap-table必不可少的引用css,js文件,除此之外,需要准备显示的json数据源,并简单的配置一下。完成的效果如下
第一步:准备Json数据
1.struts2本身支持json的数据,添加struts2-json-plugin-2.3.24.jar,用于json数据的转化。(如果是用Servlet,用fastjson,Gson也可以)
2.Bean对象:创建一个Bean对象作为演示,将List<T>数据转化成Json数据,这里需要注意的是TimeStamp在转成Json时会变成:2017-08-10T12:12:20,有一个T,只要在对应的get方法添加一个格式化的注释@JSON(format
= "yyyy-MM-dd HH:mm:ss")就可以了。
packagecom.demo.domain;
import org.apache.struts2.json.annotations.JSON;
import java.sql.Timestamp;
public class
News {
private intnid;
private Stringntit;
private Stringndes;
private Stringnimg;
private Stringnfrom;
private Timestampndate;
private Integernlooks;
public News() {
}
publicNews(intnid,String
ntit,String ndes,String
nimg,String nfrom,Timestamp
ndate,Integer nlooks) {
this.nid=
nid;
this.ntit=
ntit;
this.ndes=
ndes;
this.nimg=
nimg;
this.nfrom=
nfrom;
this.ndate=
ndate;
this.nlooks=
nlooks;
}
public intgetNid()
{
returnnid;
}
public voidsetNid(intnid)
{
this.nid=
nid;
}
publicStringgetNtit()
{
returnntit;
}
public voidsetNtit(String
ntit) {
this.ntit=
ntit;
}
publicStringgetNdes()
{
returnndes;
}
public voidsetNdes(String
ndes) {
this.ndes=
ndes;
}
publicStringgetNimg()
{
returnnimg;
}
public voidsetNimg(String
nimg) {
this.nimg=
nimg;
}
publicStringgetNfrom()
{
returnnfrom;
}
public voidsetNfrom(String
nfrom) {
this.nfrom=
nfrom;
}
@JSON(format="yyyy-MM-dd
HH:mm:ss")
publicTimestampgetNdate()
{
returnndate;
}
public voidsetNdate(Timestamp
ndate) {
this.ndate=
ndate;
}
publicIntegergetNlooks()
{
returnnlooks;
}
public voidsetNlooks(Integer
nlooks) {
this.nlooks=
nlooks;
}
@Override
public booleanequals(Object
o) {
if(this==
o) return true;
if (o ==null||
getClass() != o.getClass())return false;
News btlNews = (News) o;
if (nid!=
btlNews.nid)return false;
if (ntit!=null?
!ntit.equals(btlNews.ntit)
: btlNews.ntit
!= null)return false;
if (ndes!=null?
!ndes.equals(btlNews.ndes)
: btlNews.ndes
!= null)return false;
if (nimg!=null?
!nimg.equals(btlNews.nimg)
: btlNews.nimg
!= null)return false;
if (nfrom!=null?
!nfrom.equals(btlNews.nfrom)
: btlNews.nfrom
!= null)return false;
if (ndate!=null?
!ndate.equals(btlNews.ndate)
: btlNews.ndate
!= null)return false;
if (nlooks!=null?
!nlooks.equals(btlNews.nlooks)
: btlNews.nlooks
!= null)return false;
return true;
}
@Override
public inthashCode()
{
intresult =nid;
result =31*
result + (ntit!=null?ntit.hashCode()
:0);
result =31*
result + (ndes!=null?ndes.hashCode()
:0);
result =31*
result + (nimg!=null?nimg.hashCode()
:0);
result =31*
result + (nfrom!=null?nfrom.hashCode()
:0);
result =31*
result + (ndate!=null?ndate.hashCode()
:0);
result =31*
result + (nlooks!=null?nlooks.hashCode()
:0);
return
result;
}
}
第二步:编写对应的Action
NewsAction: 这里将getNewsListFromDB()模拟从数据库获取到数据,其他有注释看看就知道了,在Struts2配置的root对应的是需要转Json数据的变量名(要有对应的get方法)。
packagecom.demo.action;
import com.demo.domain.News;
import com.opensymphony.xwork2.ActionSupport;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class
NewsAction extendsActionSupport {
//需转换输出的Json数据
privateList<News>newsList;
//要转换输出数据对应的get方法
publicList<News>getNewsList()
{
returnnewsList;
}
publicStringnewsList()
{
newsList=getNewsListFromDB();
System.out.println(newsList.size());
return
SUCCESS;
}
//直接在这里模仿从数据库获取到了List<News>的信息
privateList<News>getNewsListFromDB(){
List<News> mnewsList=newArrayList<>();
Timestamp timestamp=newTimestamp(newDate().getTime());
for (inti
= 0;i <100;i++)
{
News news=newNews(i,"新闻"+i,"新闻描述"+i,"新闻图片"+i,"新华社"+i,timestamp,i);
mnewsList.add(news);
}
System.out.println(mnewsList.size());
return
mnewsList;
}
}
第三步:配置Struts。使用的struts-json,extend不再为struts-default,改为json-default,另外result要加一个param,将要转为Json的数据配置一下。
Struts.xml
<struts>
<package
name="json"namespace="/"extends="json-default">
<action
name="newsList"class="com.demo.action.NewsAction"method="newsList">
<result
name="success"type="json">
<paramname="root">newsList</param>
</result>
</action>
</package>
</struts>
这里如果 json-default是红色的,那需要自己去添加一次facets,我用的是idea,所以贴一下图出来。
访问http://localhost:8080/BT/newsList,可以显示json格式数据。(当然,web.xml需要配置好struts2的filter信息),网址输入后访问结果页如下:
第四步:jsp页面展示。引入对应的css、js文件,我这里采用的是js方式来设置,比较灵活。url:这里是Json访问数据的Url。那个网址访问后的数据都是json的。如下面的图所示,pagination:设置是否分页,columns里面的field是对应Json数据里面的key,title是该列的标题名;其他的属性配置比如数据刷新,搜索等配置官网或者其他都有的,就不说了。
官网有提供另外一种方式,直接在<table></table>标签里面设置的,会常用的就行了,这个自己去官网了解一下应该就可以了。
Jsp:
<%@pagecontentType="text/html;charset=UTF-8"
language="java" %>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible"content="ie=edge,chrome=1">
<meta name="viewport"content="width=device-width,
initial-scale=1.0">
<title>Struts2&Bootstrap-Table</title>
<link rel="stylesheet"href="bootstrap/css/bootstrap.min.css">
<link rel="stylesheet"href="bootstrap/css/bootstrap-table.css">
<script src="bootstrap/js/jquery.min.js"></script>
<script src="bootstrap/js/bootstrap.min.js"></script>
<script src="bootstrap/js/bootstrap-table.js"></script>
<script src="bootstrap/js/bootstrap-table-zh-CN.min.js"></script>
<script type="text/javascript">
$(function()
{
$('#bsTable').bootstrapTable({
url:"http://localhost:8080/BT/newsList",
dataType:"json",/*数据类型*/
pagination:true,/*是否分页*/
columns: [
{
title:'序号',/**/
field:'nid',/*Json数据对应的字段*/
align:'center'
},
{
title:'新闻标题',
field:'ntit',
align:'center'
},
{
title:'新闻内容',
field:'ndes',
align:'center'
},
{
title:'新闻来源',
field:'nfrom',
align:'center'
},
{
title:'发布日期',
field:'ndate',
align:'center'
},
{
title:'浏览量',
field:'nlooks',
align:'center'
},
{
title:'操作',
field:'nid',
align:'center',
formatter:function(value,row,index)
{
varl ='<a
href="test.jsp?nid=\''+ row.nid +
'\'">浏览</a>
';
vare ='<a
href="test.jsp?nid=\''+ row.nid +
'\'">编辑</a>
';
vard ='<a
href="test.jsp?nid=\''+ row.nid +
'\'">删除</a>';
returnl + e + d;
}
}
]
});
});
</script>
</head>
<body>
<div class="container">
<div class="row">
<table
id="bsTable"class="col-lg-12"></table>
</div>
</div>
</body>
</html>
点击对应的操作的话,拼接成的url是http://localhost:8080/BT/test.jsp?nid=%271%27,所以还需要把单引号去掉,获取到对应的id,我是下面这个方式获取的;如果不喜欢感觉添加对应的onclick事件来处理也可以。
String str="'520'";
String numstr=str.replace("'","");
int num=Integer.parseInt(numstr);
System.out.println(num);
Web.xml:
<?xml version="1.0"encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
<display-name>BootstrapTableDemo</display-name>
<filter>
<filter-name>struts</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
至此结束
Bootstrap Table参数文档:http://bootstrap-table.wenzhixin.net.cn/documentation/
概述:
最近需要用到分页设置,并且是在struts2下,所以话不多说了。使用Bootstrap-table必不可少的引用css,js文件,除此之外,需要准备显示的json数据源,并简单的配置一下。完成的效果如下
第一步:准备Json数据
1.struts2本身支持json的数据,添加struts2-json-plugin-2.3.24.jar,用于json数据的转化。(如果是用Servlet,用fastjson,Gson也可以)
2.Bean对象:创建一个Bean对象作为演示,将List<T>数据转化成Json数据,这里需要注意的是TimeStamp在转成Json时会变成:2017-08-10T12:12:20,有一个T,只要在对应的get方法添加一个格式化的注释@JSON(format
= "yyyy-MM-dd HH:mm:ss")就可以了。
packagecom.demo.domain;
import org.apache.struts2.json.annotations.JSON;
import java.sql.Timestamp;
public class
News {
private intnid;
private Stringntit;
private Stringndes;
private Stringnimg;
private Stringnfrom;
private Timestampndate;
private Integernlooks;
public News() {
}
publicNews(intnid,String
ntit,String ndes,String
nimg,String nfrom,Timestamp
ndate,Integer nlooks) {
this.nid=
nid;
this.ntit=
ntit;
this.ndes=
ndes;
this.nimg=
nimg;
this.nfrom=
nfrom;
this.ndate=
ndate;
this.nlooks=
nlooks;
}
public intgetNid()
{
returnnid;
}
public voidsetNid(intnid)
{
this.nid=
nid;
}
publicStringgetNtit()
{
returnntit;
}
public voidsetNtit(String
ntit) {
this.ntit=
ntit;
}
publicStringgetNdes()
{
returnndes;
}
public voidsetNdes(String
ndes) {
this.ndes=
ndes;
}
publicStringgetNimg()
{
returnnimg;
}
public voidsetNimg(String
nimg) {
this.nimg=
nimg;
}
publicStringgetNfrom()
{
returnnfrom;
}
public voidsetNfrom(String
nfrom) {
this.nfrom=
nfrom;
}
@JSON(format="yyyy-MM-dd
HH:mm:ss")
publicTimestampgetNdate()
{
returnndate;
}
public voidsetNdate(Timestamp
ndate) {
this.ndate=
ndate;
}
publicIntegergetNlooks()
{
returnnlooks;
}
public voidsetNlooks(Integer
nlooks) {
this.nlooks=
nlooks;
}
@Override
public booleanequals(Object
o) {
if(this==
o) return true;
if (o ==null||
getClass() != o.getClass())return false;
News btlNews = (News) o;
if (nid!=
btlNews.nid)return false;
if (ntit!=null?
!ntit.equals(btlNews.ntit)
: btlNews.ntit
!= null)return false;
if (ndes!=null?
!ndes.equals(btlNews.ndes)
: btlNews.ndes
!= null)return false;
if (nimg!=null?
!nimg.equals(btlNews.nimg)
: btlNews.nimg
!= null)return false;
if (nfrom!=null?
!nfrom.equals(btlNews.nfrom)
: btlNews.nfrom
!= null)return false;
if (ndate!=null?
!ndate.equals(btlNews.ndate)
: btlNews.ndate
!= null)return false;
if (nlooks!=null?
!nlooks.equals(btlNews.nlooks)
: btlNews.nlooks
!= null)return false;
return true;
}
@Override
public inthashCode()
{
intresult =nid;
result =31*
result + (ntit!=null?ntit.hashCode()
:0);
result =31*
result + (ndes!=null?ndes.hashCode()
:0);
result =31*
result + (nimg!=null?nimg.hashCode()
:0);
result =31*
result + (nfrom!=null?nfrom.hashCode()
:0);
result =31*
result + (ndate!=null?ndate.hashCode()
:0);
result =31*
result + (nlooks!=null?nlooks.hashCode()
:0);
return
result;
}
}
第二步:编写对应的Action
NewsAction: 这里将getNewsListFromDB()模拟从数据库获取到数据,其他有注释看看就知道了,在Struts2配置的root对应的是需要转Json数据的变量名(要有对应的get方法)。
packagecom.demo.action;
import com.demo.domain.News;
import com.opensymphony.xwork2.ActionSupport;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class
NewsAction extendsActionSupport {
//需转换输出的Json数据
privateList<News>newsList;
//要转换输出数据对应的get方法
publicList<News>getNewsList()
{
returnnewsList;
}
publicStringnewsList()
{
newsList=getNewsListFromDB();
System.out.println(newsList.size());
return
SUCCESS;
}
//直接在这里模仿从数据库获取到了List<News>的信息
privateList<News>getNewsListFromDB(){
List<News> mnewsList=newArrayList<>();
Timestamp timestamp=newTimestamp(newDate().getTime());
for (inti
= 0;i <100;i++)
{
News news=newNews(i,"新闻"+i,"新闻描述"+i,"新闻图片"+i,"新华社"+i,timestamp,i);
mnewsList.add(news);
}
System.out.println(mnewsList.size());
return
mnewsList;
}
}
第三步:配置Struts。使用的struts-json,extend不再为struts-default,改为json-default,另外result要加一个param,将要转为Json的数据配置一下。
Struts.xml
<struts>
<package
name="json"namespace="/"extends="json-default">
<action
name="newsList"class="com.demo.action.NewsAction"method="newsList">
<result
name="success"type="json">
<paramname="root">newsList</param>
</result>
</action>
</package>
</struts>
这里如果 json-default是红色的,那需要自己去添加一次facets,我用的是idea,所以贴一下图出来。
访问http://localhost:8080/BT/newsList,可以显示json格式数据。(当然,web.xml需要配置好struts2的filter信息),网址输入后访问结果页如下:
第四步:jsp页面展示。引入对应的css、js文件,我这里采用的是js方式来设置,比较灵活。url:这里是Json访问数据的Url。那个网址访问后的数据都是json的。如下面的图所示,pagination:设置是否分页,columns里面的field是对应Json数据里面的key,title是该列的标题名;其他的属性配置比如数据刷新,搜索等配置官网或者其他都有的,就不说了。
官网有提供另外一种方式,直接在<table></table>标签里面设置的,会常用的就行了,这个自己去官网了解一下应该就可以了。
Jsp:
<%@pagecontentType="text/html;charset=UTF-8"
language="java" %>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible"content="ie=edge,chrome=1">
<meta name="viewport"content="width=device-width,
initial-scale=1.0">
<title>Struts2&Bootstrap-Table</title>
<link rel="stylesheet"href="bootstrap/css/bootstrap.min.css">
<link rel="stylesheet"href="bootstrap/css/bootstrap-table.css">
<script src="bootstrap/js/jquery.min.js"></script>
<script src="bootstrap/js/bootstrap.min.js"></script>
<script src="bootstrap/js/bootstrap-table.js"></script>
<script src="bootstrap/js/bootstrap-table-zh-CN.min.js"></script>
<script type="text/javascript">
$(function()
{
$('#bsTable').bootstrapTable({
url:"http://localhost:8080/BT/newsList",
dataType:"json",/*数据类型*/
pagination:true,/*是否分页*/
columns: [
{
title:'序号',/**/
field:'nid',/*Json数据对应的字段*/
align:'center'
},
{
title:'新闻标题',
field:'ntit',
align:'center'
},
{
title:'新闻内容',
field:'ndes',
align:'center'
},
{
title:'新闻来源',
field:'nfrom',
align:'center'
},
{
title:'发布日期',
field:'ndate',
align:'center'
},
{
title:'浏览量',
field:'nlooks',
align:'center'
},
{
title:'操作',
field:'nid',
align:'center',
formatter:function(value,row,index)
{
varl ='<a
href="test.jsp?nid=\''+ row.nid +
'\'">浏览</a>
';
vare ='<a
href="test.jsp?nid=\''+ row.nid +
'\'">编辑</a>
';
vard ='<a
href="test.jsp?nid=\''+ row.nid +
'\'">删除</a>';
returnl + e + d;
}
}
]
});
});
</script>
</head>
<body>
<div class="container">
<div class="row">
<table
id="bsTable"class="col-lg-12"></table>
</div>
</div>
</body>
</html>
点击对应的操作的话,拼接成的url是http://localhost:8080/BT/test.jsp?nid=%271%27,所以还需要把单引号去掉,获取到对应的id,我是下面这个方式获取的;如果不喜欢感觉添加对应的onclick事件来处理也可以。
String str="'520'";
String numstr=str.replace("'","");
int num=Integer.parseInt(numstr);
System.out.println(num);
Web.xml:
<?xml version="1.0"encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
<display-name>BootstrapTableDemo</display-name>
<filter>
<filter-name>struts</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
至此结束
相关文章推荐
- struts2使用struts2-bootstrap-plugin插件
- java中结合struts2自定义标签的使用
- Bootstrap进度条与AJAX后端数据传递结合使用
- 使用 Vue.js 结合bootstrap 实现的分页控件
- Bootstrap 模态框、轮播 结合使用
- Bootstrap结合BootstrapTable的使用
- Spring Boot使用FastDFS结合Dropzone.js Bootstrap上传图片
- 使用XMLHttpRequest结合struts2实现Ajax异步调用的例子
- angularjs之ui-bootstrap和ui-router结合使用
- 自定义分页标签结合spring mvc、bootstrap、mybatis、mysql的使用
- Bootstrap 模态框、轮播 结合使用
- struts2 + ajax + json的结合使用--实例讲解
- Struts2 表单提交与execute()方法的结合使用
- jqGrid与Struts2的结合应用(六) —— 使用colModel设置查询功能
- struts2和kindeditor结合使用,无法获取文本域的值
- 使用Struts2和jQuery EasyUI实现简单CRUD系统(五)——jsp,json,EasyUI的结合
- JAX-WS与Struts2的结合使用
- jqGrid与Struts2的结合应用(六) —— 使用colModel设置查询功能
- uploadify 3.2结合struts2的使用详解
- vue2.0 与 bootstrap datetimepicker的结合使用实例