📄 pageinfotag.java
字号:
// =========================================================
// 项目:宠物商店系统
// 路径:$Archive: $
// =========================================================
package example.common.tablib;
import java.util.List;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.TagSupport;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.config.ModuleConfig;
import org.apache.struts.taglib.TagUtils;
import org.apache.struts.taglib.html.Constants;
import org.apache.struts.taglib.html.FormTag;
import com.shsafe.common.basic.attribute.PageInformation;
import example.common.struts.CommonActionForm;
/**
* 翻页信息标签库。
*
* @author Michael J Chane
* @version $Revision: $ $Date: $
*/
public class PageInfoTag extends TagSupport {
/**
* serialVersionUID
*/
private static final long serialVersionUID = -801596514491006062L;
/**
* 页号连接跨度(默认5)
*/
private int span = 5;
/**
* 翻页Form在HTML中的顺序(0开始)
*/
private int formIndex = -1;
/**
* 构造一个新的<code>PageInfoTag</code>对象。
*/
public PageInfoTag() {
}
/**
* 返回<code>span</code>的值。
*
* @return <code>span</code>的值
*/
public int getSpan() {
return span;
}
/**
* 设置字段<code>span</code>的值。
*
* @param span
* 要设置的<code>span<code>字段的新值
*/
public void setSpan(int span) {
this.span = span;
}
/**
* 返回<code>formIndex</code>的值。
*
* @return <code>formIndex</code>的值
*/
public int getFormIndex() {
return formIndex;
}
/**
* 设置字段<code>formIndex</code>的值。
*
* @param formIndex
* 要设置的<code>formIndex<code>字段的新值
*/
public void setFormIndex(int formIndex) {
this.formIndex = formIndex;
}
/**
* 生成翻页信息的HTML代码。
*
* @return 跳过BODY
* @throws JspException
* 如果发生未知错误的话
* @see javax.servlet.jsp.tagext.TagSupport#doStartTag()
*/
@Override
public int doStartTag() throws JspException {
TagUtils tagUtils = TagUtils.getInstance();
FormTag formTag = (FormTag) pageContext.getAttribute(Constants.FORM_KEY,
PageContext.REQUEST_SCOPE);
if (formTag == null) {
throw new JspException("该标记必须位于<html:form>内!");
}
ModuleConfig moduleConfig = tagUtils.getModuleConfig(pageContext);
String mappingName = tagUtils.getActionMappingName(formTag.getAction());
ActionMapping mapping = (ActionMapping) moduleConfig
.findActionConfig(mappingName);
String scope = mapping.getScope();
int lookupScope = PageContext.SESSION_SCOPE;
if ("request".equalsIgnoreCase(scope)) {
lookupScope = PageContext.REQUEST_SCOPE;
}
CommonActionForm pageForm = (CommonActionForm) pageContext.getAttribute(
formTag.getBeanName(), lookupScope);
tagUtils.write(pageContext, renderPageInfo(pageForm));
tagUtils.write(pageContext, renderPageLink(pageForm));
tagUtils.write(pageContext, renderJavaScript(formTag, pageForm));
return SKIP_BODY;
}
/**
* 描绘页面信息的HTML代码。
*
* @param pageForm
* ActionForm
* @return 页面信息的HTML代码
*/
protected String renderPageInfo(CommonActionForm pageForm) {
PageInformation pageInfo = pageForm.getPageInfo();
StringBuilder buff = new StringBuilder(150);
String sp = System.getProperty("line.separator");
buff.append("<input type=\"hidden\" name=\"pageInfo.pageNo\" value=\"")
.append(pageInfo.getPageNo()).append("\">").append(sp);
buff.append("<a style=\"color:#FF6600;font-size:12px\">共");
buff.append(pageInfo.getTotalPage());
buff.append("页</a> ").append(sp);
return buff.toString();
}
/**
* 描绘页面连接的HTML代码。
*
* @param pageForm
* ActionForm
* @return 页面连接的HTML代码
*/
protected String renderPageLink(CommonActionForm pageForm) {
PageInformation pageInfo = pageForm.getPageInfo();
StringBuilder buff = new StringBuilder(100 * (span * 2 + 2));
String sp = System.getProperty("line.separator");
buff.append("<a style=\"color:#31558c;font-size:12px\"");
if (pageInfo.getPageNo() > 1) {
buff.append(" href=\"javascript:turnToPage(").append(
pageInfo.getPageNo() - 1).append(")\"");
}
buff.append(">上一页</a> ").append(sp);
List<Integer> pageSpan = pageInfo.getPageSpan(span);
for (int pageNo : pageSpan) {
buff.append("<a style=\"color:#31558c;font-size:12px\"");
if (pageNo != pageInfo.getPageNo()) {
buff.append(" href=\"javascript:turnToPage(").append(pageNo).append(
")\"");
}
buff.append(">").append(pageNo).append("</a> ").append(sp);
}
buff.append("<a style=\"color:#31558c;font-size:12px\"");
if (pageInfo.getPageNo() < pageInfo.getTotalPage()) {
buff.append(" href=\"javascript:turnToPage(").append(
pageInfo.getPageNo() + 1).append(")\"");
}
buff.append(">下一页</a> ").append(sp);
return buff.toString();
}
/**
* @param formTag
* 上下文中的<html:form>标签对象
* @param pageForm
* ActionForm
* @return 页面条转的JavaScript代码
*/
protected String renderJavaScript(FormTag formTag, CommonActionForm pageForm) {
StringBuilder buff = new StringBuilder();
String sp = System.getProperty("line.separator");
buff.append("<script type=\"text/javascript\" language=\"JavaScript\">")
.append(sp);
buff.append("<!--").append(sp);
buff.append(" function turnToPage(pageNo) {").append(sp);
buff.append(" var pageForm = document.");
if (formIndex >= 0) {
buff.append("forms[").append(formIndex).append("];").append(sp);
} else {
buff.append(formTag.getBeanName()).append(sp);
}
buff.append(" pageForm['pageInfo.pageNo'].value = pageNo;").append(sp);
buff.append(" pageForm.submit();").append(sp);
buff.append(" }").append(sp);
buff.append("//-->").append(sp);
buff.append("</script>").append(sp);
return buff.toString();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -