📄 pagerrenderer.java
字号:
package cn.org.ccs.ccse.pager;import java.io.IOException;import java.util.Map;import javax.faces.component.UIComponent;import javax.faces.component.UIData;import javax.faces.component.UIForm;import javax.faces.context.FacesContext;import javax.faces.context.ResponseWriter;import javax.faces.el.ValueBinding;import javax.faces.render.Renderer;public class PagerRenderer extends Renderer { private int first; private int itemcount; public void encodeBegin(FacesContext context, UIComponent component) throws IOException { int leftspacing; int centerspacing; int rightspacing; String id = component.getClientId(context); UIComponent parent = component; while (!(parent instanceof UIForm)) parent = parent.getParent(); String formId = parent.getClientId(context); UIComponent comp = component; while (!(comp instanceof UIData)) comp = comp.getParent(); comp = (UIData)comp; ResponseWriter writer = context.getResponseWriter(); String imgFirst = (String) get(context, component, "imgFirst"); String imgNext = (String) get(context, component, "imgNext"); String imgLast = (String) get(context, component, "imgLast"); String imgBefore = (String) get(context, component, "imgBefore"); String imgFirstHidden = (String) get(context, component, "imgFirstHidden"); String imgNextHidden = (String) get(context, component, "imgNextHidden"); String imgLastHidden = (String) get(context, component, "imgLastHidden"); String imgBeforeHidden = (String) get(context, component, "imgBeforeHidden"); Integer itemcounts = (Integer) get(context, component, "itemcount"); if (itemcounts != null) itemcount = Integer.valueOf(itemcounts); else itemcount = 0; Integer leftspacings = (Integer) get(context, component, "leftspacing"); if (leftspacings != null) leftspacing = Integer.valueOf(leftspacings); else leftspacing = 0; Integer centerspacings = (Integer) get(context, component, "centerspacing"); if (centerspacings != null) centerspacing = Integer.valueOf(centerspacings); else centerspacing = 0; Integer rightspacings = (Integer) get(context, component, "rightspacing"); if (rightspacings != null) rightspacing = Integer.valueOf(rightspacings); else rightspacing = 0; Integer firsts = (Integer) get(context, component, "first"); if (firsts != null) first = firsts.intValue(); else first = 0; Integer a = (Integer) get(context, component, "showpages"); int showpages; if (a == null) { showpages = 1; } else { showpages = a.intValue(); } // find the component with the given ID int current = first / showpages + 1; if (showpages <= 0) showpages = itemcount; int pages = (itemcount - 1) / showpages + 1; writer.startElement("table", component); writer.startElement("tr", component); writePage(writer, component, pages, current,showpages,leftspacing,centerspacing); if (first == 0) { if (imgFirstHidden != null) writeLinkImgOver(writer, component, formId, id, "<", imgFirstHidden); else writeLinkOver(writer, component, formId, id, "<", "第一页"); if (imgBeforeHidden != null) writeLinkImgOver(writer, component, formId, id, "<<", imgBeforeHidden); else writeLinkOver(writer, component, formId, id, "<<", "上一页"); } else { if (imgFirst != null) writeLinkImg(writer, component, formId, id, "<", imgFirst); else writeLink(writer, component, formId, id, "<", "第一页"); if (imgBefore != null) writeLinkImg(writer, component, formId, id, "<<", imgBefore); else writeLink(writer, component, formId, id, "<<", "上一页"); } if (first + showpages >= itemcount) { if (imgNextHidden != null) writeLinkImgOver(writer, component, formId, id, ">>", imgNextHidden); else writeLinkOver(writer, component, formId, id, ">>", "下一页"); if (imgLastHidden != null) writeLinkImgOver(writer, component, formId, id, ">", imgLastHidden); else writeLinkOver(writer, component, formId, id, ">", "最后一页"); } else { if (imgNext != null) writeLinkImg(writer, component, formId, id, ">>", imgNext); else writeLink(writer, component, formId, id, ">>", "下一页"); if (imgLast != null) writeLinkImg(writer, component, formId, id, ">", imgLast); else writeLink(writer, component, formId, id, ">", "最后一页"); } writeLinkSelect(writer, component, formId, id, pages, showpages); // hidden field to hold result writeHiddenField(writer, component, id); writer.startElement("td", component); writer.writeAttribute("width", rightspacing+"px", null); writer.endElement("td"); writer.endElement("tr"); writer.endElement("table"); } private void writeLink(ResponseWriter writer, UIComponent component, String formId, String id, String value, String text) throws IOException { writer.startElement("td", null); writer.writeAttribute("align", "right", null); writer.writeAttribute("valign", "middle", null); writer.writeAttribute("width", "80px", null); writer.startElement("a", component); writer.writeAttribute("href", "#", null); writer.writeAttribute("onclick", onclickCode(formId, id, value), null); writer.startElement("font", component); writer.writeAttribute("size", "2", null); writer.writeText(text, null); writer.endElement("font"); writer.endElement("a"); writer.endElement("td"); } private void writeLinkOver(ResponseWriter writer, UIComponent component, String formId, String id, String value, String text) throws IOException { writer.startElement("td", null); writer.writeAttribute("width", "80px", null); writer.writeAttribute("align", "right", null); writer.writeAttribute("valign", "middle", null); writer.startElement("font", component); writer.writeAttribute("size", "2", null); writer.writeText(text, null); writer.endElement("font"); writer.endElement("td"); } private void writeLinkImg(ResponseWriter writer, UIComponent component, String formId, String id, String value, String src) throws IOException { writer.startElement("td", null); writer.writeAttribute("align", "right", null); writer.writeAttribute("width", "15px", null); writer.writeText(" ", null); writer.writeText(" ", null); writer.startElement("a", component); writer.writeAttribute("href", "#", null); writer.writeAttribute("onclick", onclickCode(formId, id, value), null); writer.startElement("img", null); //writer.writeAttribute("onmouseout", // "event.srcElement.style.border=\"0px\"", null); //writer.writeAttribute("onmouseover", // "event.srcElement.style.border=\"1px solid #777777\"", null); writer.writeAttribute("border", "0", null); writer.writeAttribute("src", src, null); writer.endElement("a"); writer.endElement("td"); } private void writeLinkImgOver(ResponseWriter writer, UIComponent component, String formId, String id, String value, String src) throws IOException { writer.startElement("td", null); writer.writeAttribute("align", "right", null); writer.writeAttribute("width", "15px", null); writer.startElement("img", null); writer.writeAttribute("src", src, null); writer.endElement("td"); } private void writeLinkSelect(ResponseWriter writer, UIComponent component, String formId, String id, int pages, int showpages) throws IOException { writer.startElement("td", component); writer.writeAttribute("align", "right", null); writer.startElement("select", component); String value = ""; writer.writeAttribute("name", "selectName", null); writer.writeAttribute("onchange", onclickSelectCode(formId, id, null), "onchange"); for (int i = 1; i < pages + 1; i++) { value = i + ""; writer.startElement("font", component); writer.writeAttribute("size", 1, null); writer.startElement("option", component); writer.writeAttribute("value", value, null); if ((first / showpages + 1) == i) writer.writeAttribute("selected", "selected", null); writer.writeText("第" + value + "页", null); writer.endElement("option"); writer.endElement("font"); } writer.endElement("select"); writer.endElement("td"); } private String onclickCode(String formId, String id, String value) { StringBuffer buffer = new StringBuffer(); buffer.append("document.forms['"+formId+"'].target='_self';"); buffer.append("document.forms["); buffer.append("'"); buffer.append(formId); buffer.append("'"); buffer.append("]['"); buffer.append(id); buffer.append("'].value='"); buffer.append(value); buffer.append("';"); buffer.append(" document.forms["); buffer.append("'"); buffer.append(formId); buffer.append("'"); buffer.append("].submit()"); buffer.append("; return false;"); return buffer.toString(); } private String onclickSelectCode(String formId, String id, String value) { StringBuffer buffer = new StringBuffer(); buffer.append("document.forms['"+formId+"'].target='_self';"); buffer.append("document.forms["); buffer.append("'"); buffer.append(formId); buffer.append("'"); buffer.append("]['"); buffer.append(id); buffer.append("'].value="); buffer.append("this.options[this.selectedIndex].value;"); buffer.append(" document.forms["); buffer.append("'"); buffer.append(formId); buffer.append("'"); buffer.append("].submit();"); buffer.append(" return false;"); return buffer.toString(); } private void writeHiddenField(ResponseWriter writer, UIComponent component, String id) throws IOException { writer.startElement("td", component); writer.startElement("input", component); writer.writeAttribute("type", "hidden", null); writer.writeAttribute("name", id, null); writer.endElement("input"); writer.endElement("td"); } private void writePage(ResponseWriter writer, UIComponent component, int pagesize, int currentPage,int showpages,int leftspacing,int centerspacing) throws IOException { writer.startElement("td", component); writer.writeAttribute("width", leftspacing+"px", null); writer.endElement("td"); writer.startElement("td", component); writer.writeAttribute("width", "300px", null); writer.writeAttribute("align", "left", null); writer.writeAttribute("valign", "bottom", null); writer.startElement("font", component); writer.writeAttribute("size", "2", null); writer.writeText("共" + pagesize + "页", null); writer.writeText(" ",null); writer.writeText("第" + currentPage + "页", null); writer.writeText(" ",null); writer.writeText("共"+itemcount+"条", null); writer.writeText(" ", null); writer.writeText("每页"+showpages+"条", null); writer.endElement("font"); writer.endElement("td"); writer.startElement("td", component); writer.writeAttribute("width", centerspacing+"px", null); writer.endElement("td"); } public void decode(FacesContext context, UIComponent component) { String id = component.getClientId(context); Map parameters = context.getExternalContext().getRequestParameterMap(); String response = (String) parameters.get(id); Integer a = (Integer) get(context, component, "showpages"); int showpages = 0; int pages=1; if (a != null) { showpages = a.intValue(); } if (showpages <= 0) showpages = itemcount; if(showpages>0) pages = (itemcount - 1) / showpages + 1; if (response.equals("<")) first = 0; else if (response.equals(">")) first = (pages - 1) * showpages; else if (response.equals("<<")) first = first - showpages; else if (response.equals(">>")) first = first + showpages; else if(response==null||response.equals("")){ } else { int page = Integer.parseInt(response); first = (page - 1) * showpages; } if (first + showpages > itemcount) first = (pages - 1) * showpages; if (first < 0) first = 0; ValueBinding vb = component.getValueBinding("first"); vb.setValue(context, first); } private static Object get(FacesContext context, UIComponent component, String name) { ValueBinding binding = component.getValueBinding(name); if (binding != null) return binding.getValue(context); else return component.getAttributes().get(name); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -