自定义百万美元标签的XML命名空间

时间:2014-12-07 23:59:56

标签: xml namespaces spring-boot thymeleaf

我在我的spring-boot项目中添加了一些定制的thymeleaf方言和处理器,包括:org.store.custom.thymeleaf.dialect和org.store.custom.thymeleaf.processor。在我的html页面中,我以这种方式配置命名空间:

<html
  xmlns="http://www.w3.org/1999/xhtml"
  xmlns:th="http://www.thymeleaf.org"
  xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3"
  xmlns:form="http://form"
  xmlns:field="http://field">

它没有用。什么应该是xmlns:form和xmlns:field的正确值,以使基于它们的标记有效?

更新

百里香的配置是这样的:

@Configuration
public class Thymeleaf {
  @Bean
  public SpringTemplateEngine templateEngine() {
    SpringTemplateEngine engine  =  new SpringTemplateEngine();

    final Set<IDialect> dialects = new HashSet<IDialect>();
    dialects.add( new SpringSecurityDialect() );
    dialects.add( new FormDialect() );
    dialects.add( new FieldDialect() );
    engine.setDialects( dialects );

    return engine;
  }
}

1 个答案:

答案 0 :(得分:0)

毕竟,问题不在于命名空间,而在于我的百万美元配置。当我将类Thymeleaf.java更改为:

时,它可以工作
@Configuration
public class Thymeleaf {
  @Autowired
  private FormDialect formDialect;

  @Autowired
  private FieldDialect fieldDialect;

  @Bean
  public SpringTemplateEngine templateEngine() {
    SpringTemplateEngine engine  =  new SpringTemplateEngine();

    final Set<IDialect> dialects = new HashSet<IDialect>();
    dialects.add( new SpringSecurityDialect() );
    dialects.add( formDialect );
    dialects.add( fieldDialect );
    engine.setDialects( dialects );

    return engine;
  }

  @Bean
  public FormDialect formDialect() {
    return new FormDialect();
  }

  @Bean
  public FieldDialect fieldDialect() {
    return new FieldDialect();
  }
}