0

在我当前的 spring-boot 应用程序中,我正在尝试setting:attr为我的一些标签实现这个属性:

<a class="navbar-brand" th:href="@{/}" setting:attr="Project name"></a>

处理此属性的方言和处理器类是:

  • 方言:

public class SettingDialect extends AbstractDialect {

  public SettingDialect() {
    super();
  }

  //
  // All of this dialect's attributes and/or tags
  // will start with 'menu:'
  //
  public String getPrefix() {
    return "setting";
  }


  //
  // The processors.
  //
  @Override
  public Set<IProcessor> getProcessors() {
    final Set<IProcessor> processor = new HashSet<IProcessor>();
    processor.add(new PreferenceProcessor());
    return processor;
  }

}
  • 处理器:
    public class PreferenceProcessor extends AbstractTextChildModifierAttrProcessor {

      public PreferenceProcessor() {
        super("attr");
      }

      public int getPrecedence() {
        return 1000;
      }

      @Override
      public String getText(final Arguments arguments, final Element element, final String attributeName) {
        return "Hello, "  + element.getAttributeValue(attributeName) + "!";
      }

    }

但是当我运行应用程序并使用此属性访问带有标签的页面时,它不会被处理(显示源代码setting:attr="Project name"而不是适当的值)。

任何人都可以给我一个提示这里有什么问题吗?

更新

thymeleaf 的配置是这样的:

@Configuration
public class ThymeleafContext {

  @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 ListaDialect() );
    dialects.add ( new MenuDialect() );
    dialects.add ( new SettingDialect() );
    engine.setDialects( dialects );

    return engine;
  }

}

4

0 回答 0