JTwig全局字段过滤器

时间:2016-06-19 10:51:54

标签: jtwig

我必须转义JTwig模板的所有字符串字段。 对于字段,我的意思是:{{myfield}}{{myobject.myproperty}}

我知道我可以使用类似{{myfield|escape}}的过滤器,但是这个转义应该用于所有字段,所以我想知道是否有一个方法可以使用或覆盖为每个字符串做一个全局过滤器字段。

例如:

public String function filter(String input){
   return input.replaceAll("[^\\x00-\\x7F]", "");
}

(我不是将Jtwig用作html模板引擎,而是用于原始文本打印的通用模板引擎。这是逃避非ascii字符的原因。)

1 个答案:

答案 0 :(得分:0)

我相信您希望默认定义转义模式。在Jtwig,有两种方法可以实现这一目标。

  1. 定义自定义转义模式并使用autoescape标记包装整个模板。
  2. EnvironmentConfiguration configuration = configuration()
      .escape()
        .engines()
          .add("Custom", removeStrangeCharacters())
        .and()
      .and()
    .build();
    
    {% autoescape 'Custom' %}{{ myField }}{% endautoescape %}
    
    1. 定义自定义转义模式并将其设置为Jtwig配置中的初始转义模式。
    2. EnvironmentConfiguration configuration = configuration()
        .escape()
          .withInitialEngine("Custom")
          .engines()
            .add("Custom", removeStrangeCharacters())
          .and()
        .and()
      .build();
      
      {{ myField }}
      

      您可以在here中找到两个示例。