2015-01-06 6 views
1

여러 개의 JSP 포함에 대해 작업하고 있으며 이들을 호출하는 루트 파일에 매개 변수 목록을 설정하는 상황이 있습니다. 그러나 일부 매개 변수가 사용되지 않는 일부 경우에는 매개 변수가 설정되지 않습니다. 매개 변수가 설정되어 있는지 확인하는 조건문을 만들고 싶습니다. 그렇다면 매개 변수가 설정되어 있는지 확인한 다음 자리 표시자를 전혀 표시하지 마십시오. 여기에 내 코드입니다 :JSP 매개 변수를 전달한 다음 해당 매개 변수가 있는지 확인합니다.

index.jsp를

<jsp:include page="include.jsp"> 
    <jsp:param name="title" value="Title of Product"/> 
    <jsp:param name="instructor" value="Some Donkus"/> 
    <jsp:param name="artist" value=""/> 
    <jsp:param name="album" value=""/> 
</jsp:include> 

include.jsp

<ul> 
<c:if test="${!empty param.title}"> 
    <li class="instructor">Title:&nbsp;<span><%= request.getParameter("title") %></span></li> 
</c:if> 
<c:if test="${!empty param.instructor}"> 
    <li class="instructor">Instructor:&nbsp;<span><%= request.getParameter("instructor") %></span></li> 
</c:if> 
<c:if test="${!empty param.artist}"> 
    <li class="instructor">Artist:&nbsp;<span><%= request.getParameter("artist") %></span></li> 
</c:if> 
<c:if test="${!empty param.album}"> 
    <li class="instructor">Album:&nbsp;<span><%= request.getParameter("album") %></span></li> 
</c:if> 
</ul> 

현재 결과 :

  • 제목 : 제품
  • Instruc의 제목 토르 : 일부 Donkus
  • 아티스트 :
  • 앨범 : 나는 include.jsp가 제대로 채울 얻을 수 있지만, 비록 ARTIST앨범는, 자신의를 비어 있습니다

목록 항목이 계속 표시됩니다. 여기서 내가 뭘 잘못하고 있니?

+1

JSTL을 사용하고 있으므로 스크립틀릿'<% = request.getParameter ("title") %>'을 제거하십시오. '$ {param.title}'또는 ''이어야합니다. (제쳐두고 문제는 해결되지 않습니다) – developerwjk

답변

2

include.jsp 파일에이 모든 내용이 있습니까? 그렇다면, 다음 파일의 맨 위에이 추가

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 

jsp 접두사는 미리 정의되어 있지만, JSTL의 c 접두사는 없습니다.

taglib 지시어가 없어서 서버가 서버 측 태그로 <c:if>을 인식하지 못하고 서버가 평가되지 않을 수 있습니다.

그래서 그들은 "있는 그대로"브라우저로 전송됩니다. 브라우저 자체는 HTML이 아니기 때문에 무시하지만, 아티스트 및 앨범의 경우 <li>을 포함하여 나머지 모든 것을 렌더링합니다.

관련 문제