본문 바로가기
웹/WebSphere

[v6.1] JSP 에서 for each 문 사용하기

by 브래드.권 2013. 6. 11.

 

 

 

Version 1.0

문서 이력

2013-06-11 최초 작성 Ver 1.0

 

 

WebSphere 6.1 에서 아래와 같이 JSP 상에 for each 문을 사용하게 될 경우 에러가 발생하며 for each 문이 동작하지 않습니다. 

 

예제로 아래와 같이 ArrayList 를 for each 문으로 페이지에 출력해 보겠습니다.

 

<예제 소스>

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<%@page language="java" contentType="text/html; charset=EUC-KR"

             pageEncoding="EUC-KR"%>

<%@page import="java.util.ArrayList" %>

<html>

<head>

<title>test</title>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<meta name="GENERATOR" content="Rational Application Developer">

</head>

<body>

<%

ArrayList<String> list = new ArrayList<String>();

list.add("test1");

list.add("test2");

list.add("test3");

 

for (String item : list) {

             out.println(item + "<br>");

}

 %>

</body>

</html>

 

 

<에러 메시지>

 

위 에러 메시지를 보시면 only available if source level is 5.0 이라는 종류의 에러가 발생하고 있습니다.

 

 Java Bean 에서 for each 문을 사용하는 것은 문제가 되지 않지만 JSP 상에서 사용하게 될 경우 JSP 의 JDK source level 이 JDK 1.5 가 아닌 JDK 1.3 을 기본적으로 사용하여 컴파일되게 되어있어 발생한다고 합니다. 따라서 JDK 1.5 를 사용하여 컴파일 하도록 지정해줘야 하는데 이는 아래와 같은 방법으로 설정할 수 있습니다.

 

1. 해당 어플리케이션의 웹 배치 설명자 화면의 확장 탭을 엽니다.

2. 확장 화면 하단 JSP 속성에서 아래 그림과 같이 jdkSourceLevel 속성을 추가하고 15란 값을 지정합니다.

 

WebSphere 내부적으로 jdkSourceLevel 이 13 으로 되어 있기 때문에 명시적으로 15를 사용하도록 지정해주는 것입니다.

 

위와 같이 JSP 속성 추가 후 저장을 하게 되면 ibm-web-ext.xmi 에 JSP 속성 코드가 추가됩니다. 따라서 위와 같이 화면에서 추가하지 않고 ibm-web-ext.xmi 파일에 아래와 같이 빨간 부분을 수동으로 추가해 줘도 됩니다.

 

<?xml version="1.0" encoding="UTF-8"?>

<webappext:WebAppExtension xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:webappext="webappext.xmi" xmi:id="WebAppExtension_1362703751342" reloadInterval="3" reloadingEnabled="true" additionalClassPath="" fileServingEnabled="true" directoryBrowsingEnabled="false" serveServletsByClassnameEnabled="true" preCompileJSPs="false">

  <webApp href="WEB-INF/web.xml#WebApp_ID"/>

  <jspAttributes xmi:id="JSPAttribute_1" name="jdkSourceLevel" value="15"/>

</webappext:WebAppExtension>

 

  

3. 웹 배치 설명자를 저장하고 해당 어플리케이션을 재배포한 후 JSP 파일을 실행해 봅니다.

 

<화면>

 

 

위 화면과 같이 정상적으로 for each 문이 동작하여 ArrayList 에 있는 문자열들을 화면에 출력했습니다.