zoukankan      html  css  js  c++  java
  • freemarker自定义标签

    freemarker   自定义标签


    有两种方法,一种是Spring注解添加自定义标签  一种的编码添加自定义标签


    第一种:编码添加自定义标签

    步骤一:添加自定义解析器

    创建一个类继承  FreeMarkerConfigurer 类.重写afterPropertiesSet方法


    示例:

    @Override
    	public void afterPropertiesSet() throws IOException, TemplateException {
    		super.afterPropertiesSet();
    		this.getConfiguration().setSharedVariable("boolean",
    				new BooleanDirective());
    	}

    setSharedVariable()    第一个是你freemaker要使用的标签名称 ,可以自定义   ,第二个是你实现的自定义标签


    配置解析器

    <bean class="这个class改成自定义的解析器">
    	<property name="templateLoaderPath" value="/WEB-INF/page/" />
    </bean>


    详细讲解下BooleanDirective   实现

    创建  BooleanDirective    类 可以自定义名称     实现TemplateDirectiveModel接口

    重写  execute 方法

    Environment 获取输出流。Map 自定义标签传过来的  <key,值> ,TemplateModel[]这个我也不是很清楚,很少用,可以自己去查资料

    TemplateDirectiveBody 用来输出.


    Writer out = env.getOut();
    TemplateScalarModel scalarModel = (TemplateScalarModel) params.get("flag");
    boolean flag = scalarModel.getAsString().equals("123");
    if (flag) {
    	body.render(out);
    }else {
    	
    }

    params.get()  返回有3中数据类型:

    TemplateNumberModel 数字类型, TemplateScalarModel 字符串类型,TemplateBooleanModel boolean类型


    根据你实际的需求走,我这里接收的是TemplateScalarModel 类型的

    我得到一个值 然后判断是不是123     如果是的话,进行  标签的内容  输出 ,不是的话 标签的内容就不进行输出

    模版调用:

     [@boolean flag="123"]测试boolean[/@boolean]


    这个flag是你那里map得到的key

    到这里结束了,可以自己去试试.

    还有一个简化添加自定义标签  

    Spring注解添加自定义标签



    <bean id="booleanBean" class="com.shiro.freemaker.utils.BooleanDirective"></bean>


    <bean id="booleanBean" class="自定义标签全类名"></bean>
    
    <bean class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
    	<property name="templateLoaderPath" value="/WEB-INF/page/" />
    	<property name="freemarkerVariables">
    		<map>
    			<entry key="boolean" value-ref="我和自定义标签全类名对应" />
    		</map>
    	</property>
    </bean>


    就可以了.2种方法随你想用哪一个


    可以还需要:   freemarker中使用shiro标签

  • 相关阅读:
    C++中int与string的相互转换【转】
    C# 获取文件名及扩展名【转】
    k8s查看容器日志---查看运行中指定pod以及指定pod中容器的日志
    shell字符串截取
    Kubernetes集群之清除集群
    Expect Command And How To Automate Shell Scripts Like Magic
    CentOS 7搭建本地yum源和局域网yum源
    使用MobaXterm配置ssh隧道(port forwarding)
    重置jenkins用户名密码
    Kubernetes之Taints与Tolerations 污点和容忍
  • 原文地址:https://www.cnblogs.com/zhousiwei/p/10625864.html
Copyright © 2011-2022 走看看