2
jsp의 사용자 정의 태그가 사용자 정의 태그 평가 후 html 컨텐츠로 대체된다는 것을 마지막으로 배웠습니다. 하지만이 개념을 실제로 적용하면 다음과 같은 문제에 직면하게됩니다. jsp 안에 3 div가 있고 그 중 2 개가 정적이고 중간 div에 맞춤 태그가 있습니다. 그래서 중간 div의 사용자 정의 태그에 의해 생성 된 html 콘텐츠는 중간 div에서만 대체되어야합니다. 그러나 출력 결과가 다른 것 같습니다. 코드에 문제가 있거나 문제의 시작에 사용 된 문구에 수정이 필요한 부분이 있으면 알려주세요.Jsp 사용자 정의 태그가 잘못된 순서로 html 컨텐츠로 바뀝니다
home.jsp
<div style="height: 80px; background-color: #FFA500;">
<%@ include file="banner.html"%>
</div>
<div style="height: 450px;">
<connect:dbConnector user="root" password="" url="jdbc:mysql://localhost/musicstore" scope="session">
</connect:dbConnector>
<connect:Query where="select * from musicstore.songs;">
<ui:addTable name="musicList">
<c:forEach var="value" items="${result }">
<c:set scope="session" var="currentRow" value="${value }"></c:set>
<ui:addRow data="currentRow" scope="session">
</ui:addRow>
</c:forEach>
</ui:addTable>
</connect:Query>
</div>
<div style="height: 80px; background-color: #FFA500;">Footer
content</div>
내가 웹 브라우저에서 볼 수 있습니다
HTML 내용
<table border="1" name=" musicList ">
<tr> <td>Tum hi ho</td>
<td>Arjit Singh</td>
<td>45</td></tr>
<tr> <td>Manjha</td>
<td>Amit Trivedi</td>
<td>30</td></tr>
<tr> <td>Ranjhanna</td>
<td>A.R Rehman</td>
<td>25</td></tr>
<tr> <td>Sawar Loon</td>
<td>Monali Thankur</td>
<td>20</td></tr>
</table>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<div style="height: 80px; background-color: #FFA500;">
<img src="/WEB-INF/resources/music_banner.png" ></img>
</div>
<div style="height: 450px;">
</div>
<div style="height: 80px; background-color: #FFA500;">Footer
content</div>
</body>
</html>
AddRowTag.java
public class AddRowTag extends TagSupport {
// some getter, setter and other utility methods here.
@Override
public int doStartTag() throws JspException {
try {
System.out.println("AddRowTag--> doStartTag");
Row content = getDataToDisplay();
StringBuilder htmlContent = new StringBuilder();
htmlContent.append(startTableRow);
htmlContent.append(startTableData);
htmlContent.append(content.getTitle());
htmlContent.append(endableData);
htmlContent.append(startTableData);
htmlContent.append(content.getArtist());
htmlContent.append(endableData);
htmlContent.append(startTableData);
htmlContent.append(content.getPrice());
htmlContent.append(endableData);
htmlContent.append(endableRow);
System.out.println(htmlContent.toString());
pageContext.getResponse().getWriter().print(htmlContent);
} catch (IOException e) {
e.printStackTrace();
}
return SKIP_BODY;
}
}
문제 요약된다 :
-
을
- (변환 된 코드 (html 코드)의 배치 위치 컨텍스트에서) jsp 사용자 정의 태그 코드는 최종 html 파일에 있습니다.
- 중간 div를 맞춤 태그를 기준으로 업데이트해야하는 경우 내 현재 jsp 코드에서 수정해야하는 내용.
모든 제안/설명은 높이 평가 될 것입니다.
문제는 태그 자체에 아마에 의해
를 교체합니다. 내 생각 엔 일부 버퍼링을 수행하는 JSP Writer를 우회하여 응답 출력 스트림이나 작성기에 직접 씁니다. 수정 사항을 확인하고 제안하려면 코드를 게시하십시오. 사이드 노트 : 왜 세션 범위를 사용하여 현재 행을 반복으로 저장합니까? 그것이 페이지 범위입니다. –
@JBNizet '사이드 노트'에서 작성한 포인트가 정확합니다. 페이지 범위를 사용해야합니다. 또한 AddRowTag에 대한 코드를 게시 한 질문의 편집을 참조하십시오. –