自定義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}"/>


好了~今天的分享就到這裏了

記住我是個可愛的小丸紙的,該文章希望大神指點指點!

在這裏虛心討教~





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