Почему имя определения подстановочного знака Tiles не может принимать символ косой черты (/) - PullRequest
2 голосов
/ 29 июня 2011

Как мы видим, документация Tiles сказала https://tiles.apache.org/framework/tutorial/advanced/wildcard.html Мы можем определить подстановочный знак для принятия произвольного имени. Но если имя включает «/», например «c4 / login». Плитка скинет исключение

org.apache.tiles.definition.NoSuchDefinitionException: c4/login
    at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:625)
    at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:321)

Мое определение ниже:

<definition name="*" template="/WEB-INF/tiles/basicLayout.jsp">
  <put-attribute name="header" value="/WEB-INF/tiles/header.jsp" />
  <put-attribute name="content" value="/WEB-INF/pages/{1}.jsp" />
  <put-attribute name="footer" value="/WEB-INF/tiles/footer.jsp" />
</definition>

Если я изменю определение на приведенный ниже пример, имя с косой чертой будет принято.

<definition name="c4/login" template="/WEB-INF/tiles/basicLayout.jsp">
  <put-attribute name="header" value="/WEB-INF/tiles/header.jsp" />
  <put-attribute name="content" value="/WEB-INF/pages/c4/login.jsp" />
  <put-attribute name="footer" value="/WEB-INF/tiles/footer.jsp" />
</definition>

Пожалуйста, сообщите. Большое спасибо.

Ответы [ 2 ]

2 голосов
/ 20 февраля 2012

Я думаю, что нашел более общий способ: используйте ** в качестве подстановочного знака:

<definition name="**" template="/WEB-INF/tiles/basicLayout.jsp">
  <put-attribute name="header" value="/WEB-INF/tiles/header.jsp" />
  <put-attribute name="content" value="/WEB-INF/pages/{1}.jsp" />
  <put-attribute name="footer" value="/WEB-INF/tiles/footer.jsp" />
</definition>
1 голос
/ 29 июня 2011

Я нашел обходное решение, используйте пересмотренное определение ниже

<definition name="*/*" template="/WEB-INF/tiles/basicLayout.jsp">
  <put-attribute name="header" value="/WEB-INF/tiles/header.jsp" />
  <put-attribute name="content" value="/WEB-INF/pages/{1}/{2}.jsp" />
  <put-attribute name="footer" value="/WEB-INF/tiles/footer.jsp" />
</definition>

Надеюсь, это полезно для вас.

...