/** * Copyright (c)2010-2011 Enterprise Website Content Management System(EWCMS), All rights reserved. * EWCMS PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * http://www.ewcms.com */ package com.ewcms.publication.freemarker.directive.page; import java.util.List; import org.springframework.util.Assert; import com.ewcms.publication.PublishException; import com.ewcms.publication.freemarker.FreemarkerUtil; import com.ewcms.publication.freemarker.GlobalVariable; import com.ewcms.publication.uri.UriRuleable; import freemarker.core.Environment; import freemarker.template.TemplateDirectiveModel; import freemarker.template.TemplateException; import freemarker.template.TemplateModelException; /** * 页面跳转基础标签类 * <br> * 主要为标签得到通用参数值如:页数、总页数。 * * @author wangwei * */ public abstract class SkipBaseDirective implements TemplateDirectiveModel { /** * 得到当前页数 * * @param env * Freemarker 环境变量 * @return * @throws TemplateModelException */ protected Integer getPageNumberValue(Environment env)throws TemplateException { return PageUtil.getPageNumberValue(env); } /** * 得到总页数 * * @param env * Freemarker 环境变量 * @return * @throws TemplateModelException */ protected Integer getPageCountValue(Environment env)throws TemplateException { return PageUtil.getPageCountValue(env); } /** * 得到Uri生成那个规则 * * @param env * @return * @throws TemplateException */ protected UriRuleable getUriRule(Environment env)throws TemplateException{ return (UriRuleable)FreemarkerUtil.getBean(env, GlobalVariable.URI_RULE.toString()); } /** * 默认输出 * * @param pages 页面输出对象集合 * * @return */ protected String constructOut(List<PageOut> pages){ StringBuilder builder = new StringBuilder(); for(PageOut page : pages){ if(page.isActive()){ builder.append("<a href='").append(page.getUrl()).append("'>") .append(page.getLabel()) .append("</a>") .append(" "); }else{ builder.append(page.getLabel()).append(" "); } } return builder.toString(); } static class GeneratorUrl{ private UriRuleable rule; private Integer currentPage; GeneratorUrl(UriRuleable rule,Integer currentPage){ Assert.notNull(rule); this.rule = rule; this.currentPage = currentPage; } /** * 得到链接地址 * * @param rule * uri生成规则 * @param page * 页数 * @return * @throws TemplateException */ public String getUriValue(Integer page) throws TemplateException { try{ setPage(page); String uri = rule.getUri(); setPage(currentPage); return uri; }catch(PublishException e){ throw new TemplateModelException("Generator uri error:{}",e); } } private void setPage(Integer page){ rule.putParameter(GlobalVariable.PAGE_NUMBER.toString(), page); } } }