Тег действия не выполняется в Struts 2
У меня проблема с вызовом действий из моих страниц JSP с тегом в Struts2. У меня есть файл login.jsp:
<s:action name="headerMenu" executeResult="true" namespace="/menu"</s:action>
<s:form action="executeLogin">
<s:textfield name="username" label="Username"></s:textfield>
<s:password name="password" label="Password"></s:password>
<s:submit></s:submit>
</s:form>
Действие headerMenu отображает результат в header.jsp:
<div id="menu">
<s:iterator value="menus">
<s:property escape="false" value="'<a href=\"'+path+'\" title=\"'+description+'\">'+title+'</a>'"/>
</s:iterator>
</div>
Этот jsp-файл отображает меню, полученное из LinkedList (именованные меню) в классе Action действия headerMenu.
При доступе к "login.action" меню отображается нормально, но если я ввожу данные в форму, отправляю форму, и отправка имеет ошибки проверки, я возвращаюсь на страницу, форма отображается нормально, но меню пропал, отсутствует. У меня все еще есть "..." на странице, но нет меню... Это похоже на то, что вызывается действие, которое дает меню, но метод execute() не выполняется...
Может кто-нибудь помочь мне с этим?
Васи.
2 ответа
Пожалуйста, обратите внимание на 1-ю строку. Тег s:action не закрыт должным образом. Должно быть так:
<s:action name="headerMenu" executeResult="true" namespace="/menu"></s:action>
Я хотел бы выяснить, может ли причина быть связана со следующими 2 фрагментами из документации тега struts2:
"Любой обработчик результатов, определенный для этого действия в struts.xml, будет игнорироваться, если не указан параметр executeResult".
"Действие не будет опубликовано в контексте до тех пор, пока не будет оценен весь тег, а это означает, что внутри тела тега действие недоступно"