spring-boot项目不评估百万美元定制处理器

时间:2016-06-16 17:13:06

标签: spring spring-boot thymeleaf dialect

出于某种原因,我目前的春季启动项目没有评估我的定制百里香标签。我在我的Application类中注册了方言:

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

方言以这种方式引用处理器:

public class FormDialect extends AbstractDialect {
  public String getPrefix() {
    return null;
  }

  public Set<IProcessor> getProcessors() {
    final Set<IProcessor> processors = new HashSet<IProcessor>();
    processors.add(new com.loja.thymeleaf.processor.form.FormProcessor());
    return processors;
  }
}

但是当我用这样的代码打开一个页面时:

      <Form ...>
        <Fieldset type="Input" class="form-group">
          <Label></Label>
          <Input class="form-control"></Input>
        </Fieldset>

        <Fieldset type="Select" class="form-group">
          <Label></Label>
          <Select class="form-control"></Select>
        </Fieldset>

        <Fieldset type="Textarea" class="form-group">
          <Label></Label>
          <Textarea class="form-control"></Textarea>
        </Fieldset>
      </Form>

处理器未被评估为最终代码。任何人都可以看到这里有什么问题?这是在这个项目中工作,突然(经过一些改变,我不记得是什么)停止工作。

1 个答案:

答案 0 :(得分:1)

比较我的工作代码,您可能会遗漏@Configuration注释。

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

你应该定义前缀

public class FormDialect extends AbstractDialect {
  @Override
  public String getPrefix() {
    return "some_prefix";
  }

  @Override
  public Set<IProcessor> getProcessors() {
    final Set<IProcessor> processors = new HashSet<IProcessor>();
    processors.add(new com.loja.thymeleaf.processor.form.FormProcessor());
    return processors;
  }
}

模板

<html xmlns:th="http://www.thymeleaf.org"
      xmlns:some_prefix="http://xxx">
  <!-- ... -->
  <Form some_prefix:your_diarect_attribute="...">
    <!-- ... -->
  </Form>
</html>

your_diarect_attributeorg.thymeleaf.processor.AttributeNameProcessorMatcher#attributeName

相对应

AttributeNameProcessorMatcher已延长com.loja.thymeleaf.processor.form.FormProcessor