2016-06-19 2 views
4

Thymeleaf имеет ряд полезных утилит, таких как #strings.capitalize(...) или #lists.isEmpty(...). Я пытаюсь добавить пользовательский, но не знаю, как зарегистрировать это.Thymeleaf - как добавить пользовательскую утилиту?

Сделали пользовательский Util класс:

Теперь я собираюсь использовать его как это:

<span th:each="item : ${#labels.splitDoubleWord(name)}" th:text="${item}"></span> 

Конечно, это не будет работать, потому что я не зарегистрирован Утилизация и определение #labels var.

Итак, вопрос в том, как и где это сделать?

ответ

6

и зарегистрируйте свой диалект.

@Configuration 
public class ThymeleafConfig { 

    @Bean 
    public MyDialect myDialect() { 
    return new MyDialect(); 
    } 
} 

thymeleaf-extras-java8time исходного код хороший справочник для создания пользовательского thymeleaf выражений.

+0

работает отлично, спасибо – WildDev

1

API-интерфейс для регистрации пользовательского объекта выражение имеет changed in Thymeleaf 3, например:

public class MyDialect extends AbstractDialect implements IExpressionObjectDialect { 

    MyDialect() { 
     super("My Dialect"); 
    } 

    @Override 
    public IExpressionObjectFactory getExpressionObjectFactory() { 
     return new IExpressionObjectFactory() { 

      @Override 
      public Set<String> getAllExpressionObjectNames() { 
       return Collections.singleton("myutil"); 
      } 

      @Override 
      public Object buildObject(IExpressionContext context, 
        String expressionObjectName) { 
       return new MyUtil(); 
      } 

      @Override 
      public boolean isCacheable(String expressionObjectName) { 
       return true; 
      } 
     }; 
    } 
} 
Смежные вопросы