freemarker自定义指令 怎么获取参数

 我来答
福喜900
推荐于2016-10-26 · TA获得超过6.1万个赞
知道大有可为答主
回答量:1.1万
采纳率:0%
帮助的人:1亿
展开全部
在项目应用中,遇到这样一个问题,当文本过长时,需要将前面的文本省略一部分,用…代替,而使用css只能在文本最后加…

我们可以通过freemarker自定义指令的方式实现上述功能。
freemarker自定义指令需要继承TemplateDirectiveModel接口,
Java代码 收藏代码
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配置文件中配置该指令

Xml代码 收藏代码
<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>

在模版中使用

Html代码
<@ellipsis text="1234567" length="6"></@ellipsis>
Storm代理
2023-07-25 广告
StormProxies是一家可靠的代理服务提供商,提供原生IP(住宅原生IP)和高匿名代理服务。以下是关于StormProxies的原生IP服务的一些信息:1. 住宅原生IP:StormProxies提供的住宅原生IP是指从真实的家庭或企... 点击进入详情页
本回答由Storm代理提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式