Плагин Struts2 Tiles с несколькими классами действий
В Интернете нашел несколько очень хороших примеров, которые интегрируют Struts 2 с Tiles 2. Я заметил, что ВСЕ из них отображают действия, используя метод подстановочных знаков из одного класса действий. Есть ли причина для этого? Мое приложение не работает, когда я сопоставляю действия индивидуально нескольким классам. В приведенном ниже коде lookUpAll
действие было добавлено мной. Остальная часть кода взята из примера, которому я пытаюсь следовать.
Struts.xml:
<struts>
<package name="default" extends="struts-default">
<result-types>
<result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" />
</result-types>
<action name="*Link" method="{1}" class="action.LinkAction">
<result name="welcome" type="tiles">welcome</result>
<result name="friends" type="tiles">view</result>
<result name="office" type="tiles">office</result>
</action>
<action name="lookUpAll" class="action.LookupAll">
<result name="success" type="tiles">view</result>
<result name="error" type="tiles">lookFail</result>
</action>
</package>
</struts>
Tiles.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
"http://tiles.apache.org/dtds/tiles-config_2_0.dtd">
<tiles-definitions>
<definition name="baseLayout" template="/baseLayout.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>
<definition name="welcome" extends="baseLayout">
<put-attribute name="title" value="Welcome"/>
<put-attribute name="body" value="/welcome.jsp"/>
</definition>
<definition name="view" extends="baseLayout">
<put-attribute name="title" value="View"/>
<put-attribute name="body" value="/DispSchedule.jsp"/>
</definition>
<definition name="lookFail" extends="baseLayout">
<put-attribute name="title" value="LookFail"/>
<put-attribute name="body" value="/lookUpFail.jsp"/>
</definition>
<definition name="friends" extends="baseLayout">
<put-attribute name="title" value="Friends"/>
<put-attribute name="body" value="/friends.jsp"/>
</definition>
<definition name="office" extends="baseLayout">
<put-attribute name="title" value="Office"/>
<put-attribute name="body" value="/office.jsp"/>
</definition>
</tiles-definitions>
1 ответ
Использование подстановочного знака не требуется, но удобно, когда приложение использует одно (или несколько) действие, несколько методов для обработки тесно связанных функций.
Особенно для небольших приложений и демонстраций, это способ минимизировать конфигурацию XML.
В наши дни может быть более типичным удалить большую часть конфигурации XML и настроить действия / методы индивидуально, используя аннотации.
Изменить, чтобы отразить новый вопрос.
Я не могу продублировать проблему. Взятие минимального приложения S2 с одной строкой в menu.jsp и header.jsp и урезанным baseLayout.jsp приводит к следующему: