2011-09-02 8 views
0

저는 java와 sitemesh를 사용하고 있습니다.within sitemesh <decorator : body />

본체 장식 내가이가 profile.jsp를 포함 추가 할 때

<jsp:include page="/serveComments.html" flush="true"> 
<jsp:param value="78" name="passId"/> 
</jsp:include> 

을 다음과 같이 JSP가있는 Profile.jsp 파일이 포함 호출 사라지고 난 그냥 serveComments.html 왼쪽 해요 (헤더로이 SiteMesh에 의해 처리 boders 장소에 있습니다. 나는이 분명했습니다

<decorators defaultdir="/WEB-INF/sitemesh-decorators"> 
    <excludes> 
     <pattern>/j_spring_security_logout</pattern> 
     <pattern>/pages/logout-redirect.jsp</pattern> 
     <pattern>*/getMagazine.html*</pattern> 
     <pattern>*/serveComments.html*</pattern> 

    </excludes> 

    <decorator name="main" page="main.jsp"> 
     <pattern>/*</pattern> 
    </decorator> 

    <decorator name="panel" page="panel.jsp"/> 
    <decorator name="printable" page="printable.jsp"/> 
</decorators> 

희망을 다음과 같이

decorator.xml입니다.

답변

1

<jsp:include>은 템플릿 프레임 워크와 함께 사용하는 것이 좋습니다. 적어도 tomcat에서 jsp : include 태그는 pagecontext 태그 버퍼가 아니라 outputstream에 출력을 직접 기록하는 방식으로 구현됩니다. 예를 들어, Tiles는 "표준"태그 라이브러리로 작동하여 pagecontext 태그 버퍼의 스택에 출력을 기록한 다음 전체 태그 계층 구조가 렌더링되면 서블릿 출력 스트림으로 출력합니다 . 이것은 jsp :를 Tiles 문맥에서 효과적으로 사용할 수 없도록 만든다.

jsp : include는 태그 버퍼에 쓰지 않고 직접 출력 스트림에 쓰므로 콘텐츠가 순서가 아닌 순서로 전송되거나 전혀 전송되지 않으므로 sitemesh 태그의 작동 방식에 따라 다릅니다. sitemesh 태그는 렌더링하는 동안 출력 스트림을 null 스트림으로 리디렉션 할 수 있습니다.

+0

감사합니다. 나는 그만큼 두려워했다. 당신이 알고있는 해결 방법이 있습니까? 일단 profile.jsp가 sitemesh에 의해 처리 되었다면 아약스를 통해 설명 페이지를로드 할 수 있습니다. 더 나은 대안이 있습니까? – jaseFace

+0

나는 아약스로 여분의 콘텐츠 클라이언트를로드하는 것으로 갔다. 해결책을 찾으려고 애쓰는 괴로워하는 사람을 구해줬으므로 올바른 대답으로 확인하고 있습니다. – jaseFace

+0

좋은 솔루션을 찾았습니다. 이것은 태그 기반 템플릿 프레임 워크와 결합 될 때 종종 JSP 표준 구현의 간과 된 한계입니다. jsp : include가 "일반"jsp 태그와 동일한 태그 버퍼 패턴을 사용하여 구현되지 않은 이유를 알기가 어렵습니다. – pap

관련 문제