1

I have a StackOverflowError during resolving a view using Apache Tiles 3.0.5. Stacktrace:

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)....

What I found from debugging AjaxTilesView is that tiles is looking for parameter "title" and enters infinite loop. He founds Select Books, then looking for Select Books.title, then Select Books.title.title and so on (in flattenAttributeMap).

My tiles config:

<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>

The reason why i am using "selectedBooks" is because I am using ajax (Spring JS with webflow) to render only fragment of page. I would be thankfull to anyone who can solve this problem.

Gazeciarz
  • 516
  • 1
  • 8
  • 22
  • I found that it is because "show.selected.books" by default inherits definition matched regex "*", so I assume that I should change the "*" pattern but how? – Gazeciarz Apr 17 '16 at 22:06
  • 1
    I'm not sure but this might be related to your problem. http://stackoverflow.com/questions/6521609/why-tiles-regexp-wildcard-definition-cause-endless-jsp-including-error/6617343#6617343 – Lexi Apr 18 '16 at 11:26

0 Answers0