2010-06-16 5 views
3

JSP 페이지를 내가 좋아 자주 것 한 가지가 같은 것을 할 수 있다는 것입니다 만들 때 :JSP 구성 요소 생성

<jsp:include page="fancystoryrenderer.jsp" value="${aStoryObjectInMyModel}/> 

을 ...

fancystoryrenderer.jsp 

<div id="fancymainbody"> 
    ... 
    ${theStory.title} 
    ... 
</div> 

이의 주요 중요한 특성 다른 JSP 페이지에서 동일한 구성 요소를 재사용 할 수 있다는 점은 구성 요소를 붙여 넣기하지 않고도 스토리 변수에 다른 이름을 부여 할 필요가 없으며 "aStoryObjectInMyModel"이 아닌 JSP에서 "TheStory"라는 스토리에 주목하십시오. 우리 모델 간의 연계가 뷰에 의해 깨졌습니다. wh 이 경우에는 좋은 점이 있습니다. 또한 JSP 뷰에 매개 변수를 전달할 수도 있지만 요청 개체의 특성을 가져오고 싶지는 않습니다. 표현식 언어에서 매개 변수를 사용할 수 있기를 원합니다.

어떻게하면 되나요?

Spring MVC와 JSP를 사용하고 있습니다. 프레임 워크를 추가하지 마십시오. 현재 가지고있는 웹 스택 만 사용하여이 작업을 수행하는 데 관심이 있습니다.

답변

4

요청한 모델을 원하는 (또는 더 넓은) 범위에 넣으면 "전달"하지 않고 작동합니다.

예를 들어 JSTL c:forEach 루프 (현재 포함 된 항목을 포함 된 JSP 페이지에서 실제로 액세스 할 수없는 로컬 범위에 넣음)와 같은 페이지를 포함하기 때문에 실제로 필요로하는 경우가 있습니다. 그것을 설정하려면 c:set을 사용하십시오. include.jsp에서와

<c:forEach items="${items}" var="item"> 
    <c:set var="currentitem" value="${item}" scope="request" /> 
    <jsp:include page="include.jsp" /> 
</c:forEach> 

:

<p>Current item: ${currentitem}</p> 

그냥 :)

4

이것은 소위 "태그 파일"을 사용하여 arhcives 수 있습니다 일 것입니다. 태그 파일은 기본적으로 WEB-INF/태그 아래에 놓인 JSP 파일이며 taglib처럼 사용할 수 있습니다. 이 예제에서는 xml 구문을 사용하고 있지만 이전 구문에도 사용할 수 있습니다.

는 /WEB-INF/tags/mytag.jspx

<?xml version='1.0' encoding='utf-8'?> 
<jsp:root version="2.1" xmlns:jsp="http://java.sun.com/JSP/Page"> 
    <jsp:directive.attribute name="mybean" required="true" rtexprvalue="true" type="mypackage.MyBean"/> 
    <div> 
     ${mybean.myproperty} 
    </div> 
</jsp:root> 

test.jspx

<?xml version='1.0' encoding='utf-8'?> 
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1" xmlns:tags="urn:jsptagdir:/WEB-INF/tags/"> 
    <jsp:directive.page contentType="text/html; charset=utf-8"/> 
    <div> 
     <tags:mytag mybean="${mymodel.mybean}"/> 
    </div> 
</jsp:root> 

또한 WEB-INF에 파일 implicit.tld을해야 할 수도 있습니다/태그 태그 라이브러리를 설정하기 버전 :

<?xml version='1.0' encoding='utf-8'?> 
<taglib xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd" 
    version="2.1" xmlns="http://java.sun.com/xml/ns/javaee"> 
    <tlib-version>2.1</tlib-version> 
</taglib>