`
lanhuidong
  • 浏览: 223793 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Freemarker自定义指令

阅读更多

在项目应用中,遇到这样一个问题,当文本过长时,需要将前面的文本省略一部分,用…代替,而使用css只能在文本最后加…

 

我们可以通过freemarker自定义指令的方式实现上述功能。

freemarker自定义指令需要继承TemplateDirectiveModel接口,

package com.nexusy.freemarker.directive;
 
import java.io.IOException;
import java.util.Map;
 
import freemarker.core.Environment;
import freemarker.template.SimpleScalar;
import freemarker.template.TemplateDirectiveBody;
import freemarker.template.TemplateDirectiveModel;
import freemarker.template.TemplateException;
import freemarker.template.TemplateModel;
 
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(params.get("text") != null){
            text = ((SimpleScalar) params.get("text")).getAsString();
        }
        if(params.get("length") != null){
            length = Integer.valueOf(((SimpleScalar) params.get("length")).getAsString());
        }
        if(length < text.length()){
            text = "..." + text.substring(text.length() - length);
        }
        env.getOut().write(text);
    }
}

 

 然后在springmvc配置文件中配置该指令

 

<bean id="ellipsis" class="com.nexusy.freemarker.directive.EllipsisDirective" />
<bean id="freemarkerConfig"
		  class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
	<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>

 

 

在模版中使用

 

 

 

<@ellipsis text="1234567" length="6"></@ellipsis>

 

 

 

分享到:
评论

相关推荐

    freemarker自定义的通用分页指令(标签)源码和使用示例

    一个用FTL定义的非常通用数据分页指令,有源码,有使用示例。使用效果图可以参看本人博客中的相关文章:http://blog.csdn.net/qjyong/archive/2009/10/18/4693142.aspx

    PublicCMSV1.0使用手册_20151012.docx

    PublicCMS是一款基于SpringMVC4.2.1,Hibernate5.0.2,FreeMarker2.3.23,hibernate-search5.5.0开发的永久免费开源JAVACMS系统,支持全站静态化,SSI技术,更有多种独创解决方案,FreeMarker自定义指令自动加载,0关联...

    freemarker语法完整版

    B 指令 if, else, elseif 语法 Java代码 &lt;#if condition&gt; ... &lt;#elseif condition2&gt; ... &lt;#elseif condition3&gt; ... ... &lt;#else&gt; ... &lt;/#if&gt; ... ... ... ... ... 用例 ...

    freemarker总结

    6、 用户自定义FTL指令:宏和变换器 7、 节点 节点变量表示为树型结构中的一个节点,通常在XML处理中使用。 在模板里对sequences和hashes初始化 sequences 1. [“you”,”me”,”he”] 2. 1..100 3. [ {“Akey...

    freemarker-advance-demo:对freemarker的一些特性的使用demo

    #freemarker demo这是一个介绍freemarker的一些使用方法的demo、目前主要提供了两个freemarker的高级用法:自定义指令及宏

    超完整FreeMarker中文教程,代码

    4.1 自定义指令 ................................................................................................ 46 4.2 在模板中定义变量 ...................................................................

    freemarker+struts2仿QQ分页效果

    不过由于小弟资历浅薄,也没心思看,主要是strut2的标签本来我就觉得不大习惯,另外上个月接触了freemarker后,实在是用的爽死了,为什么不用freemarker的macro指令写个通用的分页呢?马上想到模仿TX的...

    Java学习指南(11) FreeMarker与MVC框架

    〖主要内容〗包含以下内容,具体以课程目录为准:* 开发环境与API* 基本类型的插值* Hash 与 Sequece类型的插值* 常用的 built-in 用法* 等指令的用法* 自定义函数 Method Variables * 共享变量 Shared ...

    FreeMarker中文指导手册

    4.1 自定义指令 ................................................................................................ 45 4.2 在模板中定义变量 ...................................................................

    FreeMarker 手册

    4.1 自定义指令 ................................................................................................ 45 4.2 在模板中定义变量 ...................................................................

    适合作为毕设选题,采用了SpringBoot,VUE,Redis,ElementUI,MySQL等多种新技术

    这是一款适合作为毕设选题,养老院使用的系统管理系统,采用了**SpringBoot,VUE,Redis,ElementUI****MySQL**等多种新...同时在权限控制方面有独到的创新,实现了VUE自定义指令,以控制系统权限到每一个系统按钮。

    深入浅出Struts2(附源码)

    24.1 JSP include指令/标签的不足 302 24.2 Tiles布局和定义 303 24.2.1 布局页面 303 24.2.2 Tiles定义 304 24.3 Struts Tiles插件 305 24.4 Struts Tiles示例 306 24.5 小结 309 第25章 JFreeChart插件 310...

    Java Web程序设计教程

    3.2.7jsp的动作指令 41 3.2.8jsp的内置对象 43 3.3认识servlet 46 3.3.1servlet的开发 46 3.3.2使用httpservlet 47 3.3.3servlet的生命周期 49 3.3.4load-on-startupservlet 50 3.4自定义标签库 51 3.5...

    深入浅出Struts 2 .pdf(原书扫描版) part 1

    24.1 JSP include指令/标签的不足 302 24.2 Tiles布局和定义 303 24.2.1 布局页面 303 24.2.2 Tiles定义 304 24.3 Struts Tiles插件 305 24.4 Struts Tiles示例 306 24.5 小结 309 第25章 JFreeChart插件 310 25.1 ...

Global site tag (gtag.js) - Google Analytics