在项目应用中,遇到这样一个问题,当文本过长时,需要将前面的文本省略一部分,用…代替,而使用css只能在文本最后加…
我们可以通过freemarker自定义指令的方式实现上述功能。
freemarker自定义指令需要继承TemplateDirectiveModel接口,
Java代码 收藏代码
package comnexusyfreemarkerdirective;
import javaioIOException;
import javautilMap;
import freemarkercoreEnvironment;
import freemarkertemplateSimpleScalar;
import freemarkertemplateTemplateDirectiveBody;
import freemarkertemplateTemplateDirectiveModel;
import freemarkertemplateTemplateException;
import freemarkertemplateTemplateModel;
public class EllipsisDirective implements TemplateDirectiveModel {
@Override
public void execute(Environment env, @SuppressWarnings("rawtypes") Map params, TemplateModel[] loopVars, TemplateDirectiveBody body)
throws TemplateException, IOException {
String text = "";
int length = 0;
if(paramsget("text") != null){
text = ((SimpleScalar) paramsget("text"))getAsString();
}
if(paramsget("length") != null){
length = IntegervalueOf(((SimpleScalar) paramsget("length"))getAsString());
}
if(length < textlength()){
text = "" + textsubstring(textlength() - length);
}
envgetOut()write(text);
}
}
然后在springmvc配置文件中配置该指令
Xml代码 收藏代码
<bean id="ellipsis" class="comnexusyfreemarkerdirectiveEllipsisDirective" />
<bean id="freemarkerConfig"
class="orgspringframeworkwebservletviewfreemarkerFreeMarkerConfigurer">
<property name="templateLoaderPath" value="/" />
<property name="freemarkerSettings">
<props>
<prop key="datetime_format">yyyy-MM-dd</prop>
<prop key="number_format">0##</prop>
<prop key="url_escaping_charset">UTF-8</prop>
<prop key="output_encoding">UTF-8</prop>
<prop key="template_exception_handler">ignore</prop>
</props>
</property>
<property name="freemarkerVariables">
<map>
<entry key="xml_escape" value-ref="fmXmlEscape" />
<entry key="ellipsis" value-ref="ellipsis" />
</map>
</property>
<property name="defaultEncoding" value="UTF-8" />
</bean>
在模版中使用
Html代码
<@ellipsis text="1234567" length="6"></@ellipsis>
定值程序如下:
[#list arrayList as c]
[#if c_index == 1]
第二项的值
[/#if]
[/#list]
FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或>
以上就是关于freemarker自定义指令 怎么获取参数全部的内容,包括:freemarker自定义指令 怎么获取参数、freemarker模板中,如何将取一个list的固定的某个值啊!、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)