JSP 페이지를 다른 JSP 페이지에 포함시키는 경우 여러 HEAD/BODY 섹션을 피하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1841274

  •  12-09-2019
  •  | 
  •  

문제

JSP 페이지를 다른 JSP 페이지에 포함시키고 싶습니다.내가 가지고 있다고 가정 해 봅시다 master.jsp 포함하는 것입니다 slave.jsp.

처럼 slave.jsp 자신의 것이있다 <head> JavaScript와 CSS를 다루는 섹션을 참조하세요. master그리고 slave 머리섹션을 하나로 쪼개서?또한 동일한 작업을 수행해야 합니다. 섹션.

나는 사용해왔다 사이트메시 최근에는 각 페이지에 템플릿을 설정하는 것이 매우 비현실적이라고 생각합니다.

도움이 되었습니까?

해결책

나는이 솔루션을 전달 하여이 솔루션을 갔다 매개 변수 페이지를 포함시킬 때.

안에 Master.jsp

<head>
  blablabla
  <c:import url="slave.jsp">
    <c:param name="sectionName" value="HEAD" />
  </c:import>
</head>
<body>
  blablabla
  <c:import url="slave.jsp">
  </c:import>
</body>

그리고 나서 Slave.jsp 매개 변수가 읽히고 페이지의 사용자 정의 부분이 렌더링됩니다.

<c:choose>
  <c:when test="${param.sectionName == 'HEAD'}">
     head section here [without the <HEAD> tags !]
  </c:when>
  <c:otherwise>
     body section here [without the <BODY> tags !]
  </c:otherwise>
</c:choose>

보기에는 좋지 않지만 일합니다. 이런 식으로 나는 의복을 제거 할 수있다. HEAD 그리고 BODY 부속.

다른 팁

당신은 둘을 합병 할 수없고 안됩니다 <html> 서로 문서. 이것은 잘못된 출력을 생성합니다. 도움이 필요한 CSS/JS를 조건부로 포함시킵니다 JSTL c:if 또는 c:choose 태그.

기본 예 :

<head>
    <script type="text/javascript" src="global.js"></script>
    <c:if test="${isAdminPage}">
        <script type="text/javascript" src="admin.js"></script>
    </c:if>
</head>

SiteMesh 이외의 지역에서는 운이 좋지 않습니다. 그러나 페이지 당 설정이 비현실적이라고 생각하면 디자인을 재고 할 것입니다. 앱에 몇 페이지가 있습니까?

조건부 옵션을 확장하고 meta.jsp (예를 들어) Map 각 헤드 요소(메타 태그, CSS href, 스크립트 href)에 대해 jsp 이름을 해당 맵의 키로 사용합니다.그럼 네가 전화해 request.getRequestURI(), 을 클릭하고 해당 키 아래에 지도에 넣은 내용을 표시합니다.매우 아름다운 솔루션은 아니지만 작동 중입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top