стойки 2 плитки NoSuchDefinitionException - PullRequest
0 голосов
/ 22 января 2011

Я получаю это исключение при использовании распорок 2 с плитками

org.apache.tiles.definition.NoSuchDefinitionException: /index.jsp

//iles.xml

<tiles-definitions>
<definition name="baseLayout" template="/index.jsp">
    <put-attribute name="title" value="/Template" />
    <put-attribute name="header" value="/Header.jsp" />
    <put-attribute name="menu" value="/Menu.jsp" />
    <put-attribute name="body" value="/body.jsp" />
    <put-attribute name="footer" value="/Footer.jsp" />
</definition>
<tiles-definitions>

// index.jsp

<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
</head>
<body>
<tiles:insertAttribute name="header"/>
<tiles:insertAttribute name="footer"/>   
</body>
</html>

// web.xml

<listener>
<listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class>
</listener>
<context-param>
<param-name>org.apache.tiles.impl.BasicTilesContainer.  
DEFINITIONS_CONFIG</param-name>
<param-value>/WEB-INF/tiles.xml</param-value>
</context-param>

// struts.xml

    <package name="default" namespace="/test" extends="struts-default">
    <result-types>
    <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" />
    </result-types>

    <action name="login" class="com.medics.action.LoginAction">
        <result name="SUCCESS" type="tiles">/index.jsp</result>
    </action>
    </package> 

Я искалмного но ничего не нашел

Ответы [ 2 ]

2 голосов
/ 23 января 2011
org.apache.tiles.definition.NoSuchDefinitionException: /index.jsp

Означает, что нет определения плиток, то есть определения имени "/index.jsp"

При использовании распорок и плиток ... Ваш запрос сводится к стойкам, а затем к плиткамгде плитки составляют представление, поэтому у вас не должно быть никаких определений плиток, называемых "everything.jsp".

Так что просто замените

<result name="SUCCESS" type="tiles">/index.jsp</result>

на

<result name="SUCCESS" type="tiles">baseLayout/result>

Сейчасэто решено ... Я бы переименовал index.jsp, template.jsp (я думаю, что это менее запутанно), почему у вас есть put-атрибут с именем "/ Template"?

Теперь, чтобы исправить проблему, я рекомендовал изменить целевой результат struts2 на baseLayout, но это, вероятно, не то, что вы имеете в виду, поэтому вы, вероятно, хотите использовать определение baseLayout для новых страниц, поэтому добавьте новое определение:

<definition name="index" extends="baseLayout">
  <put-attribute name="title" value="My Title for Index" />
  <put-attribute name="body" value="/index.jsp" />
</definition>

Теперь вышеприведенное примет это значение в defaultTemplate и добавит (или, если имя то же самое, переопределить) то, что было в базовом шаблоне, создающем страницу для index.jsp, и теперь ваши распорки.xml должен иметь

 <result name="SUCCESS" type="tiles">index</result>
0 голосов
/ 22 мая 2015

Я столкнулся с этой проблемой сегодня. Хотя это был вопрос давно, я нашел решение, как показано ниже:

<result name="SUCCESS" type="dispatcher">/index.jsp</result>

Просто замена типа tiles на dispatcher работает для меня.

...