自定义mvc中的自定义标签与通用分页

目录

  • 自定义标签
    • 通用分页

自定义标签

  1. 自定义标签生命周期
    自定义mvc中的自定义标签与通用分页_第1张图片
    SKIP_BODY:跳过主体
    EVAL_BODY_INCLUDE:计算标签主体内容并[输出]
    EVAL_PAGE:计算页面的后续部分
    SKIP_PAGE:跳过页面的后续部分
    EVAL_BODY_AGAIN:再计算主体一次

2.1 创建一个标签助手类(继承BodyTagSupport),运行到自定义标签的时候实 例化标签助手类, 标签属性必须助手类的属性对应、且要提供对应get/set方法
自定义mvc中的自定义标签与通用分页_第2张图片

2.2 在JSP通过taglib指令导入标签库描述文件.
在这里插入图片描述

2.3 配置好dld文件,标签库.创建标签库描述文件(tld),添加自定义标签的配置
注意点:tld文件必须保存到WEB-INF目录或其子目录
自定义mvc中的自定义标签与通用分页_第3张图片

通用分页

  1. 定义好分页需要的属性: pagination=true;开启分页
    自定义mvc中的自定义标签与通用分页_第4张图片

3.1 分页助手类:PageTag

定义page的属性:
请求的参数:
private Map parameterMap;
req.getParameterMap();
请求的地址:PageBean 的请求路径url.
private String url;
req.getContextPath()+req.getServletPath();

package com.hong.mvc.test.tag;

import java.io.IOException;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyTagSupport;

import com.hong.mvc.test.util.PageBean;

public class PageTag extends BodyTagSupport{

	
	private static final long serialVersionUID = 1L;
	
	//定义pageBean数属性
	private PageBean pageBean;

	public PageBean getPageBean() {
		return pageBean;
	}

	public void setPageBean(PageBean pageBean) {
		this.pageBean = pageBean;
	}
	
	public PageTag() {}
	
	@Override
	public int doStartTag() throws JspException {
		// TODO Auto-generated method stub
		JspWriter out = pageContext.getOut();
		try {
			out.println(toHtml());
		} catch (IOException e) {
			throw new RuntimeException(e);
		}
		return SKIP_BODY;
	}

	public String toHtml() {
		StringBuffer bf=new StringBuffer();
		//生产分页按钮
		bf.append("当前第:"+this.pageBean.getPage()+"页    共"+this.pageBean.getMaxPage()+"页  共"+this.pageBean.getTotal()+"条  ");
		bf.append("首页");
		bf.append("  上一页");
		bf.append("  下一页");
		bf.append("  末页");
		bf.append("确定");
		//生成分页的表单
		bf.append("
"); bf.append(""); Map<String, String[]> parameterMap=pageBean.getParameterMap(); Set<Entry<String, String[]>> entrySet = parameterMap.entrySet(); for (Entry<String, String[]> entry : entrySet) { String name=entry.getKey(); String values[]=entry.getValue(); if(name.equals("page")) { continue; } for(String value : values) { bf.append(""); } } bf.append(""
); //js bf.append(" "); return bf.toString(); } }

你可能感兴趣的:(自定义mvc中的自定义标签与通用分页)