본문 바로가기

나는 엔지니어/JSP

JSTL : import

<c:import url="${url}"/>

사용시 주의 할점...


만약 아래와 같은 코드가 있다고 가정하고 실행을 시키면 스크립트가 정상적으로 돌아가지 않는다.

원인은  <c:import url="${url}" var="urlSource"/> 에서 내부에 있는 스크립트 에러가 

( 이미지 관련 에러! 왜냐! 난 구글 이미지를 준비하지 않았으니까.ㅋ ) 발생하는데 이럴경우 내 코드의

스크립트에도 영향이 가므로 document 자체가 만들어 지지 않는다.


<script>

window.onload = function()

{

alert("tt");

var btn_see = document.getElementById("btnsee");

var btn_hidden = document.getElementById("btnhidden");

btn_see.onclick = show;

btn_hidden.onclick = hide;

};


var show = function()

{

document.getElementById("divConts").style.display = "block";

};


var hide = function()

{

document.getElementById("divConts").style.display = "none";

};


</script>


</head>

<body>


<div style="border:1px solid #ff0000">

<c:set var="url" value="http://www.google.co.kr" scope="page"/>

<c:import url="${url}" var="urlSource"/>

<c:out value="${urlSource}" escapeXml="false"/>

</div>

<div>

<input type="button" id="btnsee" value="소스보기""></input>

<input type="button" id="btnhidden" value="소스감추기"></input>

</div>

<div style="border:1px solid #ff0000" id="divConts">

<textarea rows="20" cols="100">

<c:import url="${url}" var="urlSource"/>

<c:out value="${urlSource}" escapeXml="true"/>

</textarea>

</div>

</body>

</html>



아래와 같이 버튼 이벤트에 독립적으로 맵핑해서 실행해보자.

그러면 정상적으로 실행을 할 것이다.


<script>


window.onload = function()

{

alert("tt");

var btn_see = document.getElementById("btnsee");

var btn_hidden = document.getElementById("btnhidden");

btn_see.onclick = show;

btn_hidden.onclick = hide;

};


var show = function()

{

document.getElementById("divConts").style.display = "block";

};


var hide = function()

{

document.getElementById("divConts").style.display = "none";

};



function showEvent()

{

document.getElementById("divConts").style.display = "block";

}


function hideEvent()

{

document.getElementById("divConts").style.display = "none";

}


</script>


</head>

<body>


<div style="border:1px solid #ff0000">

<c:set var="url" value="http://www.google.co.kr" scope="page"/>

<c:import url="${url}" var="urlSource"/>

<c:out value="${urlSource}" escapeXml="false"/>

</div>

<div>

<input type="button" id="btnsee" value="소스보기" onclick="showEvent()"></input>

<input type="button" id="btnhidden" value="소스감추기" onclick="hideEvent()"></input>

</div>

<div style="border:1px solid #ff0000" id="divConts">

<textarea rows="20" cols="100">

<c:import url="${url}" var="urlSource"/>

<c:out value="${urlSource}" escapeXml="true"/>

</textarea>

</div>

</body>

</html>


편법 :

스크립트 선언 

위치를 변경 ( 이 방법은 어디까지나 편법이므로 비추! )

'나는 엔지니어 > JSP' 카테고리의 다른 글

EL ( 익스프레션 언어)  (0) 2012.07.16
cleases 폴더 보기  (0) 2012.07.11
JSTL  (0) 2012.07.11
한글 깨질때..  (0) 2012.07.11
톰캣 context.xml 을 이용한 데이터베이스 연결  (0) 2012.07.10