自定义MVC框架(分页前台部分)

哈喽大家好!上次跟大家分享了分页的一个案列

那个是属于后台的  今天跟大家补充分页的前台部分


首先给大家看一下方法调用的代码

这个是写在继承玩action抽象类里面的

public String list(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
//实例化pageBean对象
PageBean pageBean=new PageBean();

//并且进行初始化
pageBean.setRequest(request);

//设置每页显示的页数
pageBean.setPsize(4);

List<Book> list = bd.list(b,pageBean);

//保存到作用域中
request.setAttribute("pageBean", pageBean);
request.setAttribute("list", list);


return "list";
}


然后在页面的显示当中我们需要自己写个自定义标签了

自定义标签需要三步:

1、 创建标签助手类

2、创建标签库描述文件

3、自定义标签的使用


第一步的步骤:

代码如下

package tag.ui;


import java.util.Map;


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


import util.PageBean;


public class PageTag extends BodyTagSupport{


private PageBean pageBean;


public PageBean getPageBean() {
return pageBean;
}


public void setPageBean(PageBean pageBean) {
this.pageBean = pageBean;
}


public PageTag() {
}


@Override
public int doStartTag() throws JspException {

try {
if(null!=pageBean){
String converHTML = converHTML();
this.pageContext.getOut().print(converHTML);
}else{
throw new RuntimeException("没有找到该pageBean对象");
}
return SKIP_BODY;
} catch (Exception e) {
throw new RuntimeException(e);
}
}


/**
* pageBean转化为html字符串
* @return String
*/
private String converHTML(){
StringBuffer sf=new StringBuffer();

//3、动态生成js代码
sf.append("<script type='text/javascript'>");
sf.append("function doSkipPage(o){");
sf.append("document.pageBeanForm.pindex.value=o;");
sf.append("document.pageBeanForm.submit();");
sf.append("}");
sf.append("var max="+pageBean.getMaxNumber()+";");
sf.append("function doGotoPage(){");
sf.append("var gotovalue=document.getElementById('goto').value;");
sf.append("if(!gotovalue||isNaN(gotovalue)||parseInt(gotovalue)<=0||parseInt(gotovalue)>max){");
sf.append("alert('只能输入1~N之间的数字!');");
sf.append("document.getElementById('goto').value='';");
sf.append("document.getElementById('goto').focus();");
sf.append("return;");
sf.append("}");
sf.append("doSkipPage(gotovalue);");
sf.append("}");
sf.append("</script>");

//2、动态的生成分页代码
sf.append("<div style='text-align: right;'>");
sf.append(" 共" + pageBean.getRows()+"条记录,每页"+pageBean.getPsize()+"条,当前页数:["+pageBean.getPindex()+"/"+pageBean.getMaxNumber()+"]");
sf.append("<a href='javascript:doSkipPage(1)'>首页</a>");
sf.append("<a href='javascript:doSkipPage("+pageBean.getBeforeNumber()+")'>上一页</a>");
sf.append("<a href='javascript:doSkipPage("+pageBean.getNextNumber()+")'>下一页</a>");
sf.append("<a href='javascript:doSkipPage("+pageBean.getMaxNumber()+")'>末页</a>");
sf.append("<input type='text' id='goto' style='width: 30px'><a href='javascript:doGotoPage()'>GO</a>");
sf.append("</div>");

//1、动态的生成form表单
sf.append("<form name='pageBeanForm' action='"+pageBean.getUrl()+"' method='post'>");
sf.append("<input type='hidden' name='pindex' value=''> ");
for(Map.Entry<String, String[]> m : pageBean.getParameterMap().entrySet()){
String name=m.getKey();
String[] values=m.getValue();
if("pindex".equals(name)){
continue;
}
for(String value:values){
sf.append("<input type='hidden' name='"+name+"' value='"+value+"'>");
}
}
sf.append("</form>");

return sf.toString();
}

}



第三步的步骤:

写完了自定义标签之后,在界面上我们只要导入自定义标签的路径然后进行调用

这样子就在jsp页面两行代码就可以了


<%@taglib prefix="v" uri="/veryedu" %>

<v:page pageBean="${pageBean}"/>


好了~今天的分享就到这里了

记住我是个可爱的小丸纸的,该文章希望大神指点指点!

在这里虚心讨教~





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章