JSP创建⼀个⾃⼰喜欢的表格
加油前端
JSP创建⼀个⾃⼰喜欢的表格
hello,⼤家好,我是你们喜欢的养只猪侠,这⾥是我的第⼀篇博客,希望⼤家喜欢,当然喜欢的点个订阅,谢谢。
项⽬中要⽤到⼀些展⽰信息的表格,表头不固定,表格内容是即时从后台取的;考虑到复⽤性,笔者⽤jsp编写了⼀个表格模板,可以从request中获取List封装的数据,然后通过JSTL结合EL表达式填充到模板。最后完成的jsp⽂件可以作为⼀个单独的模块,嵌⼊到任意其它jsp页⾯需要的位置。
⾯说⼀下格式
为简单起见,此处使⽤html的table等标签构建了⼀个简单的表格,表格背景隔⾏变⾊,整体颜⾊为蓝⾊系。表格定义部分的核⼼代码如下:
合理的创建标题,有助于⽬录的⽣成
此表格只有两列,可⽤于显⽰包含⼀组“键值对”的数据。代码中的columns是jsp页⾯中定义的⼀个java字符串数组,保存两列列头的值,例如:“设备类型”、“数量”。数据⾏使⽤JSTL的forEach标签来遍历各条数据,其中list变量是存放在request中的List类型的对象,List中存放了⼀组包含“键值对”的数据实体,笔者所⽤的数据实体是⼀个简单的Bean:
ports.charts.bean;
public classKeyValueBean {
private String key;
private String value;
public KeyValueBean() {
}
public KeyValueBean(String key, String value) {
this.key = key;
this.value = value;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getValue() {
return value;
}
public void setValue(String value){
this.value = value;
}
}
模板中的取值⽅法⽤到了EL表达式,例如${list}表⽰取出request中的list对象。${status.current}和${row}其实指代的是同⼀个东西,也就是当前遍历的数据⾏,这⾥使⽤两种不同的写法是为了给读者提供更多实现⽅式的参考。关于EL表达式的详细信息,可参考笔者转发的⽂章《JSP中的EL表达式详细介绍》。
接下来的关键就是传递list的值放到request中了。⼀般J2EE项⽬中都使⽤了Struts、SpringMVC等mvc框架,常见的处理流程应该是客户端发送数据请求,C ontroller接收请求进⾏处理,取出并⽣成合适的数据存放到⼀个List中,然后转发给View,也就是转发给JSP页⾯来显⽰。
然⽽基于其它的考虑,笔者希望这个jsp页⾯可以不经过Controller⽽独⽴运⾏,于是就需要将控制层移到jsp代码中;完整的jsp模板定义代码如下:
其中,SpringContextHolder是笔者定义的⼀个获取Spring管理的其它Bean的⼯具类,⽤这个类可以⽅便地在同⼀个项⽬所有运⾏Java 代码的地⽅使⽤,详见笔者的:《在JavaWeb应⽤中获取Spring管理的Bean的⽅法》。ReportFunctions类是⼀个业务类,包含了许多具体业务的代码,除了本⽂的jsp模板中可以使⽤之外,在项⽬的其它许多控制类都会⽤到。或者换句话说,笔者此处是借⽤了项⽬中现有的⼀个业务类,抽象出了⼀个模板。我们将模板保存⼀下,例如保存为“_tb2ColParam.jsp”,然后带着参数访问或获取这个jsp即可呈现出⼀个带样式的表格:“_tb2ColParam.jsp?p=1024&columns=types|nums”
<%@ page language="java"contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>
<%@ taglib uri="java.sun/jsp/jstl/core"prefix=“c” %>
<%@ page import=“ports.util.ReportFunctions”%>
<%@ page import=“ports.util.SpringContextHolder”%>
<%@ page import=“java.util.*”%>
<%@ page import=“ports.charts.bean.KeyValueBean”%>
<%
jsp创建String[]columns = null;
try{
columns= Parameter(“columns”).split("\|");
}catch(NullPointerExceptione){
e.printStackTrace();
System.out.println(“参数columns未赋值”);
}
if(null == columns){
columns= newString[]{“设备种类”,“数量”};
}
Stringparam = Parameter(“p”);
ReportFunctionsreportF = Bean(ReportFunctions.class);
List<KeyValueBean>list = null;
if(null != param){
list= hod(param);
}else{
System.out.println(“参数获取失败”);
}
if(0 == list.size()){
list.add(new KeyValueBean("暂未统计", "暂⽆数据"));
}
request.setAttribute("list", list);
%>
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论