반응형

아래와 같은 jsp 소스가 있습니다.


<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>taglib</title>
</head>
<body>

</body>
</html>


네... 스프링 커스텀 태그를 사용하려고 합니다.


이 페이지를 불르면 톰켓 7에서는 아래와 같은 로그가 출력되고 정상적으로 작동됩니다. (다른 WAS는 모르겠슴 -_-/)


정보: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.


뭐... 알아서 TLD 파일 찾았다는 거죠 ㄷㄷ;;;


하지만 웹로직 환경에서 페이지를 불르면 에러가 나게 됩니다.


index.jsp:2: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 parsing of the .tld file. 


<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

        ^----^


이런 경우 tld 파일을 추출해서 적당한 곳에 넣은 후 web.xml 에 등록을 해줘야 합니다.


<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	id="taglib" version="2.5">

	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>

	<!-- 여기 -->
	<jsp-config>
		<taglib>
			<taglib-uri>http://www.springframework.org/tags/form</taglib-uri>
			<taglib-location>/WEB-INF/tlds/spring-form.tld</taglib-location>
		</taglib>
	</jsp-config>

</web-app>


꼭 웹로직 환경이 아니라도  tld 를 찾지 못한다고 하면 web.xml 에 위와 같이 추가해 주면 됩니다.


<taglib-location> 값에 jar 안의 경로를 직접 지정해줄 수 있으면 더 깔끔할텐데....


반응형
//