2010-11-30 5 views
10

필자는 모든 taglib 선언 (uri 등)을 공통 헤더 파일에 넣으려는 아이디어를 가지고 있었기 때문에 수동으로 모든 태그에 태그를 쓰지 않아도된다. JSP. 처음에는 단순한 EL 구문만큼 실제 taglibs를 사용하지는 않지만 상황은 훌륭하게 보였습니다. 그러나, 나는 명시 적으로 taglibs 선언 한 것을 제외하고 모든 JSP 파일에 문제가 있습니다. 다른 jsp (헤더 파일을 포함)는 모두 <c:something.../> 태그를 HTML 인 것처럼 취급하고 평가하지 않습니다. 나는 약간의 인터넷 검색을했고, 내가하려고 노력하고있는 것이 할 수 있다고 제안하는 this post on O'Reilly를 발견했다. 그러나 나는 분명히 뭔가 잘못하고있다. 더 중요한 것은 헤더 파일의 다른 내용 (일반적인 페이지 헤더, 페이지 제목 등)이 모두 잘 나타나기 때문입니다. 헤더 파일과 포함 된 샘플은 다음과 같습니다.JSTL taglibs가 공통 헤더로 선언되었을 때 인식되지 않는다

헤더 파일 :

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> 
<%@ page session="false" %> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %> 

에 포함될 문 :

<jsp:include page="/WEB-INF/jsp/include/header.jsp"> 
    <jsp:param name="title" value="Home" /> 
</jsp:include> 

답변

21

이 예상되는 행동.

<jsp:include>을 사용하면 별도의 요청으로 대상을 실행 한 다음 포함 JSP에 출력을 포함시킵니다. 포함 된 대상의 소스을 포함하지 않으며 출력을 포함합니다. 목표 출력이 생성되는 수단이 손실됩니다. 이것은 귀하의 페이지에 header.jsp의 문자 텍스트를 기울일 것입니다

<%@ include file="/WEB-INF/jsp/include/header.jsp" %> 

:

당신이 뭘 하려는지하려면, 당신은 <% include %> 지시어를 사용해야합니다. 물론 그렇게하면 더 이상 매개 변수를 전달할 수 없으므로 페이지 컨텍스트 특성으로 설정해야합니다 (예 : <c:set> ...). 물론 완료하기 전까지는 <c:set>을 사용할 수 없습니다 귀하의 포함 ...).

본질적으로 혼전의 가치가있는 것은 아닙니다. Taglib 선언은 짜증나는 상용구이지만 제거하기는 어렵다.

+0

오, 와우, 그건 끔찍한 치킨 - 또는 - 달걀 문제가 아닙니다. 그 다음에 가장 좋은 방법은 페이지에 들어가서'<% ​​@ include ... '문법과''문법을 사용하는 두 개의 include로 나누는 것입니다. 구문, 나중에? –

+0

@Chris : 두 개의 include로 나눌 수 있습니다. 아마도 하나는 taglib에 대해 '<% @ include %>'를 사용하고 다른 하나는 HTML 헤더에 ''을 사용하는 것입니다 ... – skaffman

+0

내 의견을 편집했으나 우리가 같은 생각을 갖고있는 것처럼 보입니다 :-) 고마워요! –

관련 문제