Когда я выполняю свое приложение, у меня есть ошибка.логика: iterate throws javax.servlet.jsp.JspException: не удается создать итератор для этой коллекции
Проблема не может возникнуть из-за неправильной версии taglib?
Ошибка:
Caused by: javax.servlet.ServletException: javax.servlet.jsp.JspException: ServletException in 'menu.jsp': javax.servlet.jsp.JspException: Cannot create iterator for this collection
мое меню заселить в моем Java приложения:
Мой JSP:
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%>
<%@ taglib uri="http://struts.apache.org/tags-html-el" prefix="html"%>
<%@ taglib uri="http://struts.apache.org/tags-bean-el" prefix="bean"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://struts.apache.org/tags-logic-el" prefix="logic"%>
<%@ taglib tagdir="/WEB-INF/tags/" prefix="customTag"%>
<customTag:OverlayEntry id="overlaymenu" function="overlaymenu" />
<script type="text/javascript"
src="<html:rewrite page="/javascript/jquery.easing.js"/>"></script>
<script type="text/javascript"
src="<html:rewrite page="/javascript/jquery.accordion.js"/>"></script>
<link href="<html:rewrite page="/css/menu.css"/>" rel="stylesheet"
type="text/css" />
<logic:present name="UserSession" property="menu">
<ul id="navigation">
<logic:iterate id="t" collection="${UserSession.menu.menuEntries}"
indexId="idx">
<customTag:MenuEntry
entry="<%=(com.sodifrance.apex.presentation.generic.session.MenuEntry) t%>" />
</logic:iterate>
</ul>
</logic:present>
<script type="text/javascript">
jQuery('.current').parent().parent().prev('A').addClass('selected');
jQuery('#navigation>li>A[href]').addClass('head2');
jQuery('#navigation').Accordion({
header : '.head',
navigation : false,
event : 'click',
autoheight : false,
animated : false,
active : '.selected',
selectedClass : 'selected',
alwaysOpen : true
});
jQuery('#navigation>li>A.current').addClass('currentHead').removeClass(
'current');
</script>
мой web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<display-name>APP</display-name>
<description>Application</description>
<filter>
<filter-name>applicationFilter</filter-name>
<filter-class>com.presentation.generic.security.ApplicationFilter</filter-class>
<init-param>
<param-name>exclusions</param-name>
<param-value>/generic/authentification/Login.do,
/generic/authentification/login_action.do,
/generic/authentification/Disconnect.do,
*.js,
*.css,
*.jpg,
*.gif,
*.png,
*.ico
</param-value>
</init-param>
<init-param>
<param-name>loginUrl</param-name>
<param-value>/generic/authentification/Login.do</param-value>
</init-param>
</filter>
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>com.presentation.generic.security.EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>ISO-8859-15</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>applicationFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<listener>
<listener-class>com.presentation.generic.back.BirtEngineListener</listener-class>
</listener>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>2</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet>
<servlet-name>initDB</servlet-name>
<servlet-class>com.metier.init.DbInitializerServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet>
<servlet-name>birtEngineServlet</servlet-name>
<servlet-class>com.report.generic.BirtServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<!-- <servlet-mapping> -->
<!-- <servlet-name>jsp</servlet-name> -->
<!-- <url-pattern>/javascript/generic/messages.js</url-pattern> -->
<!-- </servlet-mapping> -->
<!-- <servlet-mapping> -->
<!-- <servlet-name>jsp</servlet-name> -->
<!-- <url-pattern>*.css</url-pattern> -->
<!-- </servlet-mapping> -->
<servlet-mapping>
<servlet-name>initDB</servlet-name>
<url-pattern>/initDB</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
Класс действия:
общественного ActionForward logInApplication_loginAction (ActionMapping отображение, форма ActionForm, HttpServletRequest запрос, HttpServletResponse ответ) бросает исключение { ActionForward actionForward = null; если (форма! = Null) { LoginAction returnCode; Форма входа в систему FormForm = (LoginForm); // выполнить код при выходе из текущей страницы currentForm.onExit();
UserSession session = null;
AccueilForm accueilForm = new AccueilForm();
if (validateLogin(currentForm, request)) {
session = new UserSession();
SessionHelper.getDefault().registerSession(session);
initializeUserSession(currentForm, session);
returnCode = LoginAction.LOGIN_SUCCESS;
} else {
ActionErrors e = new ActionErrors();
e.add("property", new ActionMessage("authentification.Login.action.login.failed", Math.floor(Math.random() * 4)));
addErrors(request, e);
returnCode = LoginAction.LOGIN_FAIL;
}
switch (returnCode) {
case LOGIN_FAIL:
request.setAttribute(LoginForm.BEAN_NAME,currentForm);
// execute code on entry of next page
currentForm.onEntry();
actionForward = mapping.findForward("LOGINACTION_LOGIN_FAIL");
break;
case LOGIN_SUCCESS:
session.setLogin(currentForm.getLogin());
request.getSession().setAttribute("UserSession", session);
accueilForm.onEntry();
request.setAttribute(AccueilForm.BEAN_NAME, accueilForm);
actionForward = mapping.findForward("LOGINACTION_LOGIN_SUCCESS");
break;
default:
break;
}
}
return actionForward;
}
моя конфигурация:
- Tomcat 8
- Struts 1.3.10
- Jdk 1,8
когда я делать то, что вы скажете мне, у меня есть эта ошибка: 'notEmpty тег в библиотеке тегов импортированной с префиксом logic' – Mercer
вы не импортировать библиотеку тегов, так что вы не можете использовать его с JSP –
Ok Как librairie я могу найти? – Mercer