package com.jspxcms.common.freemarker; import java.util.List; import com.jspxcms.common.util.Strings; import freemarker.template.TemplateMethodModelEx; import freemarker.template.TemplateModel; import freemarker.template.TemplateModelException; /** * FreeMarker字符串截断方法 * * 英文字符算半个,中文字符算一个。 * * @author liufang * */ public class SubstringMethod implements TemplateMethodModelEx { @SuppressWarnings("rawtypes") public Object exec(List args) throws TemplateModelException { String text; if (args.size() > 0) { TemplateModel arg0 = (TemplateModel) args.get(0); text = Freemarkers.getString(arg0, "arg0"); } else { throw new TemplateModelException("arg0 is missing!"); } Integer length; if (args.size() > 1) { TemplateModel arg1 = (TemplateModel) args.get(1); length = Freemarkers.getInteger(arg1, "arg1"); } else { throw new TemplateModelException("arg1 is missing!"); } String append = null; if (args.size() > 2) { TemplateModel arg2 = (TemplateModel) args.get(2); append = Freemarkers.getString(arg2, "arg2"); } String result = Strings.substring(text, length, append); return result; } }