2011-09-01 9 views
2

"model"이라는 맵을 리턴하는 스프링 컨트롤러가 있습니다. 모델에는 몇 가지 값 집합이 포함되지만 중요하게는 ArrayList도 포함됩니다. 이제는 내 JSP에서 JSTL을 사용하여 ArrayList을 가져 오는 동안이 맵을 JSP로 반환합니다. 오류가 발생합니다. 오류가 발생JSTL을 사용하여 Spring Controller에서 JSP로 Map에 액세스하는 중 오류가 발생했습니다

<c:forEach items="${model.result}" var="data" varStatus="status"> <!-- result is my ArrayList --> 
    <c:out value="${data.url}" /> <!-- here url is data inside my result arraylist --> 
</c:forEach> 

은 다음과 같습니다

root cause 

java.lang.NoSuchMethodError: javax.servlet.jsp.PageContext.getELContext()Ljavax/el/ELContext; 
    at javax.servlet.jsp.jstl.core.LoopTagSupport.unExposeVariables(LoopTagSupport.java:587) 
    at javax.servlet.jsp.jstl.core.LoopTagSupport.doFinally(LoopTagSupport.java:323) 
    at jsp_servlet._jsp.__searchsuccess._jsp__tag3(__searchsuccess.java:294) 
    at jsp_servlet._jsp.__searchsuccess._jspService(__searchsuccess.java:137) 
    at weblogic.servlet.jsp.JspBase.service(JspBase.java:34) 

그것은 톰캣 서버에서 잘 작동하지만 웹 로직에 배포 할 때 (9.2) 서버가 오류를 제공합니다. 내 클래스 경로 항목은 다음과 같습니다

<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/> 
    <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/> 
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/commons-fileupload-1.1.1.jar"/> 
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/commons-io-1.2.jar"/> 
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/commons-logging-1.1.1.jar"/> 
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/hibernate-validator-4.0.2.GA.jar"/> 
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/log4j-1.2.14.jar"/> 
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/slf4j-api-1.5.6.jar"/> 
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/slf4j-log4j12-1.5.6.jar"/> 
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/spring-asm-3.0.3.RELEASE.jar"/> 
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/spring-beans-3.0.3.RELEASE.jar"/> 
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/spring-context-3.0.3.RELEASE.jar"/> 
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/spring-core-3.0.3.RELEASE.jar"/> 
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/spring-expression-3.0.3.RELEASE.jar"/> 
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/spring-web-3.0.3.RELEASE.jar"/> 
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/spring-webmvc-3.0.3.RELEASE.jar"/> 
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/validation-api-1.0.0.GA.jar"/> 
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/log4j-1.2.9.jar"/> 
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/servlet-2.3.jar"/> 
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jre6"> 
     <attributes> 
      <attribute name="owner.project.facets" value="jst.java"/> 
     </attributes> 
    </classpathentry> 
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/jstl-1.2.jar"/> 
    <classpathentry kind="output" path="WebContent/WEB-INF/classes"/> 

업데이트 : 나는 JSTL-1.2.jar를 제거하고 지금은 컴파일 오류 얻을 : 스택 트레이스 당으로

searchsuccess.jsp:1:5: No tag library could be found with this URI. Possible causes could be that the URI is incorrect, or that there were errors during pa 
rsing of the .tld file. 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
    ^----^ 
searchsuccess.jsp:1:5: No tag library could be found with this URI. Possible causes could be that the URI is incorrect, or that there were errors during pa 
rsing of the .tld file. 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
    ^----^ 

     at weblogic.servlet.jsp.JavelinxJSPStub.compilePage(JavelinxJSPStub.java:298) 
     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:394) 
+0

하지만의 경우에는 해당되지 않습니다 :

은 다음 게시물을 참조하시기 바랍니다 내 웹 애플 리케이션에서 어떤 jsp-api.jar도 갖고 있지 않다. : P – GOK

답변

1

java.lang.NoSuchMethodError: javax.servlet.jsp.PageContext.getELContext()Ljavax/el/ELContext; 
    at javax.servlet.jsp.jstl.core.LoopTagSupport.unExposeVariables(LoopTagSupport.java:587) 

JSTL <c:forEach> 태그는 메소드을 기다리고 있습니다.. 이 방법은 JSP 2.1에서 소개되었습니다. 이 예외는 따라서 컨테이너가 JSP 2.1을 지원하지 않거나 JSP 2.1을 지원하지 않는 컨테이너의 servletcontainer 특정 JSP 라이브러리로 런타임 클래스 경로를 어지럽 혔을 때 JSTL 1.2를 사용하고 있음을 나타냅니다. 런타임 클래스 경로는 webapp의 /WEB-INF/lib 폴더와 Java의 JRE/libJRE/lib/ext 폴더를 포함합니다.

당신이해야 결코 같은 etc..etc jsp-api.jar, servlet-api.jar, el-api.jar, j2ee.jar, javaee.jar 등 해당 폴더에 풋 servletcontainer 특정 라이브러리 .. 당신은 일반적으로 servletcontainer 자체의 /lib 폴더에서 볼 해당 파일. 예 : Tomcat/lib. 웹 애플리케이션이 대상 서블릿 컨테이너로 이동할 수 없게 만듭니다. 이 웹 애플리케이션을 실행중인 대상 ServletContainer에는 해당 라이브러리 이 이미입니다. JSP/Servlet 패키지에서 컴파일 오류를 극복하기 위해이 작업을 수행했다면이를 다르게 해결해야합니다. 또한 How do I import the javax.servlet API in my Eclipse project?


업데이트를 참조하십시오, 당신은 서블릿 2.4/JSP 2.0 컨테이너 웹 로직 9.2을 사용하여 갱신에 따라. JSP 2.1/JSTL 1.2는 전혀 지원하지 않습니다. JSTL 1.2 라이브러리를 제거해야합니다. 내가 잘못 본 것이 아니라면, Weblogic은 이미 JSTL 1.1을 가지고있다. 그렇지 않으면 클래스 경로 (/WEB-INF/lib 폴더)에 직접 포함시켜야합니다. our JSTL wiki page에서 JSTL 1.1 다운로드 링크를 찾을 수 있습니다.

+0

java.lang.NoSuchMethodError : javax.servlet.jsp.PageContext.getELContext() Ljavax/el/ELContext; javax.servlet.jsp.jstl.core.LoopTagSupport.doFinally에서 javax.servlet.jsp.jstl.core.LoopTagSupport.unExposeVariables (LoopTagSupport.java:587) (LoopTagSupport.java:323) jsp_servlet._jsp에서 에서 . __searchsuccess._jsp__tag3 (__ searchsuccess.java:294) at jsp_servlet._jsp .__ searchsuccess._jspService (__ searchsuccess.java:137) weblogic.servlet.jsp.JspBase.service (JspBase.java:34) – GOK

+0

안녕하세요, 그 gud one 어떤 U 넣어 ... .... 제발 게시물을 편집했습니다 .. 당신이 명확하고 그림을 얻을 희망; – GOK

+0

'jstl-1.2.jar'을 제거하십시오. Weblogic은 이미 JSTL 1.1과 함께 제공됩니다. Weblogic 9.2는 Servlet 2.4/JSP 2.0 만 지원합니다. JSTL 1.2에는 Servlet 2.5/JSP 2.1이 필요합니다. 따라서이 예외. – BalusC

0

웹 응용 프로그램에 el-api.jar가 있습니까? JSP-api.jar을 사용하지 않는 .... 어디 선가 본,

http://www.coderanch.com/t/526731/JSP/java/java-lang-NoSuchMethodError-javax-servlet

-Kaj :) 또한

+0

'el-api.jar '만 있으면이 특별한 예외가 생길 수 없다. 더군다나, JSP 2.1 이전에는'el-api.jar'가 존재하지 않습니다. JSP 2.0에서는 "jsp-api.jar"(적어도 Tomcat에서)의 일부로 제공되었습니다. EL은 JSP 2.1 에서처럼 JSP에서 추출되었습니다. 일부 EL 기록에 대해서는 http://stackoverflow.com/questions/4812755/difference-between-jsp-el-jsf-el-and-unified-el/4812883#4812883을 참조하십시오. – BalusC

관련 문제