我正在创建一个自定义的百里香字典。我需要知道如何将参数从thymleaf html片段传递给处理器。我能够实现一个参数,但是我需要知道我们将如何实现多个参数。 下面是我的百里香叶片段。
<th:block dialectPrefix:customDialect="${parameter}"> </th:block>
下面是我的处理器逻辑
protected void doProcess(final ITemplateContext context, final IProcessableElementTag tag, final AttributeName attributeName, final String attributeValue, final IElementTagStructureHandler structureHandler) { final IEngineConfiguration configuration = context.getConfiguration(); final IStandardExpression categoryExpression = parser.parseExpression(context, someString); final IStandardExpressionParser parser = StandardExpressions.getExpressionParser(configuration); String fetchValue=categoryExpression.execute(context).toString() //I am able to get the value of parameter }
如果我想像下面那样从百里香html中传递多个参数
<th:block dialectPrefix:customDialect="${parameter1}" "${parameter2} etc"> </th:block>
我可以像HTML中的','
一样用"${parameter1,parameter2}"
分开它,虽然效果很好,但是我需要在我的处理器[.java]级别进行拆分。如果有其他方法可以在html级别实现,对我有帮助
任何遇到过这种情况的人都可以阐明。
答案 0 :(得分:0)
可以通过以下方式完成:
致电:
<th:block th:include="mailFragments::test('f1', 'f2', 'f3')"/>
片段:
<th:block th:fragment="test(p1,p2,p3)">
<element dialectPrefix:customDialect="|${p1},${p2},${p3}|">тест</element>
</th:block>
并且:
new AbstractAttributeTagProcessor(TemplateMode.HTML, PREFIX, null, false, NAME, true, 1000, true) {
@Override
protected void doProcess(final ITemplateContext context, final ProcessableElementTag tag, final AttributeName name, String href, final IElementTagStructureHandler structureHandler) {
final IEngineConfiguration configuration = context.getConfiguration();
final IStandardExpressionParser parser = StandardExpressions.getExpressionParser(configuration);
final IStandardExpression categoryExpression = parser.parseExpression(context, value);
String delimitedResult = categoryExpression.execute(context).toString();
String[] params = delimitedResult.split(",");
.....
}
PS:有关自定义百里香标签的信息,请参见Say Hello! Extending Thymeleaf in 5 minutes