StackOverflowError с Apache Tiles 3 при использовании атрибута put

У меня возникла ошибка StackOverflowError при разрешении представления с помощью Apache Tiles 3.0.5. Трассировки стека:

java.lang.StackOverflowError
java.util.regex.Pattern.atom(Pattern.java:2220)
java.util.regex.Pattern.sequence(Pattern.java:2130)
java.util.regex.Pattern.expr(Pattern.java:1996)
java.util.regex.Pattern.compile(Pattern.java:1696)
java.util.regex.Pattern.<init>(Pattern.java:1351)
java.util.regex.Pattern.compile(Pattern.java:1028)
java.lang.String.replaceAll(String.java:2210)
org.apache.tiles.definition.pattern.PatternUtil.replace(PatternUtil.java:225)
org.apache.tiles.definition.pattern.PatternUtil.replaceVarsInSimpleAttribute(PatternUtil.java:177)
org.apache.tiles.definition.pattern.PatternUtil.replaceVarsInAttribute(PatternUtil.java:147)
org.apache.tiles.definition.pattern.PatternUtil.replacePlaceholders(PatternUtil.java:94)
org.apache.tiles.definition.pattern.wildcard.WildcardDefinitionPatternMatcher.createDefinition(WildcardDefinitionPatternMatcher.java:78)
org.apache.tiles.definition.pattern.AbstractPatternDefinitionResolver.searchAndResolveDefinition(AbstractPatternDefinitionResolver.java:101)
org.apache.tiles.definition.pattern.AbstractPatternDefinitionResolver.resolveDefinition(AbstractPatternDefinitionResolver.java:54)
org.apache.tiles.definition.dao.CachingLocaleUrlDefinitionDAO.getDefinitionFromResolver(CachingLocaleUrlDefinitionDAO.java:157)
org.apache.tiles.definition.dao.ResolvingLocaleUrlDefinitionDAO.getDefinitionFromResolver(ResolvingLocaleUrlDefinitionDAO.java:81)
org.apache.tiles.definition.dao.CachingLocaleUrlDefinitionDAO.getDefinition(CachingLocaleUrlDefinitionDAO.java:110)
org.apache.tiles.definition.dao.CachingLocaleUrlDefinitionDAO.getDefinition(CachingLocaleUrlDefinitionDAO.java:49)
org.apache.tiles.definition.UnresolvingLocaleDefinitionsFactory.getDefinition(UnresolvingLocaleDefinitionsFactory.java:89)
org.apache.tiles.impl.BasicTilesContainer.getDefinition(BasicTilesContainer.java:286)
org.apache.tiles.impl.BasicTilesContainer.isValidDefinition(BasicTilesContainer.java:273)
org.springframework.js.ajax.tiles3.AjaxTilesView.flattenAttributeMap(AjaxTilesView.java:161)
org.springframework.js.ajax.tiles3.AjaxTilesView.flattenAttributeMap(AjaxTilesView.java:165)
org.springframework.js.ajax.tiles3.AjaxTilesView.flattenAttributeMap(AjaxTilesView.java:165)....

При отладке AjaxTilesView я обнаружил, что плитки ищут параметр «title» и входят в бесконечный цикл. Он основывает Select Books, затем ищет Select Books.title, затем Select Books.title.title и так далее (в flattenAttributeMap).

Конфигурация моей плитки:

<definition name="template" template="/WEB-INF/templates/template.jsp">
    <put-attribute name="header" value="/WEB-INF/templates/header.jsp" />
    <put-attribute name="footer" value="/WEB-INF/templates/footer.jsp" />
</definition>
<definition name="*" extends="template">
    <put-attribute name="title" value="{1}.title" />
    <put-attribute name="body" value="/WEB-INF/views/{1}.jsp" />
</definition>
<definition name="*/*" extends="template">
    <put-attribute name="title" value="{1}.{2}/title" />
    <put-attribute name="body" value="/WEB-INF/views/{1}/{2}.jsp" />
</definition>
<definition name="selectBooks" extends="template">
    <put-attribute name="title" value="Select books" />
    <put-attribute name="body" value="show.selected.books" />
</definition>
<definition name="show.selected.books"
    template="/WEB-INF/views/createOrders/selectBooks.jsp">
    <put-attribute name="selectedBooks"
        value="/WEB-INF/views/createOrders/showSelectedBooks.jsp" />
</definition>

Причина, по которой я использую «selectedBooks», заключается в том, что я использую ajax (Spring JS с веб-потоком) для визуализации только фрагмента страницы. Буду благодарен всем, кто сможет решить эту проблему.


person Gazeciarz    schedule 17.04.2016    source источник
comment
Я обнаружил, что это связано с тем, что show.selected.books по умолчанию наследует регулярное выражение , соответствующее определению, поэтому я предполагаю, что мне следует изменить шаблон, но как?   -  person Gazeciarz    schedule 18.04.2016
comment
Я не уверен, но это может быть связано с вашей проблемой. stackoverflow.com/questions/6521609/   -  person Lexi    schedule 18.04.2016