2013-08-31 25 views
0

我创建自己的MarkupSubstitutionElementProcessor:在Thymeleaf方言设置可变

public class PaginationElementProcessor extends AbstractMarkupSubstitutionElementProcessor { 

    ... 

    @Override 
    protected List<Node> getMarkupSubstitutes(Arguments arguments, Element element) { 
     FragmentAndTarget fragmentAndTarget = new FragmentAndTarget("pagination", WholeFragmentSpec.INSTANCE); 
     List<Node> nodes = fragmentAndTarget.extractFragment(arguments.getConfiguration(), arguments, arguments.getTemplateRepository()); 
     return nodes; 
    } 

} 

而且我pagination.html看起来是这样的:

<p th:text="${page}">1</p> 

如何我在ElementProcessor设定新的变量,以便它可以在我的模板中使用?

回答

0

当定义一个新的处理器,这将延长你的AbstractMarkupSubstitutionElementProcessor,覆盖processElement方法:

@Override protected ProcessorResult processElement(Arguments arguments, Element element) { 
    final Map<String,Object> localVariables = new HashMap<String,Object>(); 
    ... 
    return ProcessorResult.setLocalVariablesAndProcessTextNodes(localVariables, true); 
} 

我不知道该processElement会在你的情况下调用,但如果是这样,应该给你访问到模板中的哈希映射字符串。