今天在配置struts-menu動態加載菜單數據時,按照struts-menu官方網站上的demo所說,用如下方式:
<menu:useMenuDisplayer name="Velocity" config="/templates/xtree.html"
repository="repository">
<c:forEach var="menu" items="${repository.topMenus}">
<menu-el:displayMenu name="${menu.name}"/>
</c:forEach>
</menu:useMenuDisplayer>
repository="repository">
<c:forEach var="menu" items="${repository.topMenus}">
<menu-el:displayMenu name="${menu.name}"/>
</c:forEach>
</menu:useMenuDisplayer>
我用的應用服務器是weblogic9.2,可是運行報錯如下:
<c:forEach var="menu" items="${repository.topMenus}">
^---^
main.jsp:38:26: 該特性不支持請求時間值。
<c:forEach var="menu" items="${repository.topMenus}">
^---^
main.jsp:38:26: 該特性不支持請求時間值。
<c:forEach var="menu" items="${repository.topMenus}">
^---^
at weblogic.servlet.jsp.JavelinxJSPStub.compilePage(JavelinxJSPStub.java:292)
at weblogic.servlet.jsp.JspStub.prepareServlet(JspStub.java:200)
at weblogic.servlet.jsp.JspStub.prepareServlet(JspStub.java:164)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:235)
at weblogic.servlet.internal.ServletStubImpl.onAddToMapException(ServletStubImpl.java:391)
Truncated. see log file for complete stacktrace
>
^---^
main.jsp:38:26: 該特性不支持請求時間值。
<c:forEach var="menu" items="${repository.topMenus}">
^---^
main.jsp:38:26: 該特性不支持請求時間值。
<c:forEach var="menu" items="${repository.topMenus}">
^---^
at weblogic.servlet.jsp.JavelinxJSPStub.compilePage(JavelinxJSPStub.java:292)
at weblogic.servlet.jsp.JspStub.prepareServlet(JspStub.java:200)
at weblogic.servlet.jsp.JspStub.prepareServlet(JspStub.java:164)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:235)
at weblogic.servlet.internal.ServletStubImpl.onAddToMapException(ServletStubImpl.java:391)
Truncated. see log file for complete stacktrace
>
這個錯誤弄的有點糊塗,後來到Tomcat上運行,也出錯:
org.apache.jasper.JasperException: /top.jsp(9,1) According to TLD or attribute directive in tag file, attribute items does not accept
這個錯誤就比較明顯,應該是表達式的問題。後來經查資料發現原來是引用JSTl庫的版本問題,對於JSTL1.0引用時應如下:
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%>
而對於JSTL1.1引用時候應改變uri,如下:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
經調整後,問題解決