freemark自定义标签

本文介绍了一个使用Freemarker模板引擎实现的UserDirective指令,用于根据用户ID获取并展示用户数据。通过配置参数和指令使用,实现动态数据的灵活展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public class UserDirective implements TemplateDirectiveModel {



    public static final String ID = "id";


    @Autowired
    protected AdminUserService adminUserService;


    @Override
    public void execute(Environment env, Map params, TemplateModel[] loopVars, TemplateDirectiveBody body) throws TemplateException, IOException {
        if (loopVars.length < 1) {
            throw new TemplateModelException("Loop variable is required.");
        }
        if (body == null) {
            throw new RuntimeException("missing body");
        }
        Long id  = Freemarkers.getLong(params,ID);
        AdminUser adminUser = null;
        if(id != null){
            adminUser = adminUserService.findUniqueBy("id",id);
        }

        loopVars[0] = env.getObjectWrapper().wrap(adminUser);
        body.render(env.getOut());

    }
}
<bean id="User" class="com.sr.fore.manage.web.core.directive.UserDirective"/>

 

<property name="freemarkerSettings">
            <props>

                <prop key="tag_syntax">square_bracket</prop>
                <prop key="template_update_delay">2</prop>
                <prop key="defaultEncoding">UTF-8</prop>
                <prop key="url_escaping_charset">UTF-8</prop>
                <prop key="localized_lookup">false</prop>
                <prop key="locale">zh_CN</prop>
                <prop key="boolean_format">true,false</prop>
                <prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop>
                <prop key="date_format">yyyy-MM-dd</prop>
                <prop key="time_format">HH:mm:ss</prop>
                <prop key="number_format">0.###</prop>
                <prop key="whitespace_stripping">true</prop>
                <prop key="auto_import">/spring.ftl as s</prop>
            </props>
        </property>

 

FreeMarkerConfigurationFactory  
setFreemarkerVariables(Map<String, Object> variables)

 

[#escape x as (x)!?html]
<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>

[@User id = "1";user]
<table>
    <thead>
    ${user.userName}
    </thead>
</table>
[/@User]
</body>
</html>
[/#escape]

  freemarkerVariables 是一个map对象,键对应标签名称,值对应xxxDirective

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值