在我当前的 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;
}
}