2010-12-21 2 views
0
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
pageEncoding="ISO-8859-1"%> 
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<style type="text/css"> 
.even { 
background-color: silver; 
} 
</style> 
<title>Registration Page</title> 
</head> 
<body> 

<form:form action="add.htm" commandName="user"> 
<table> 
    <tr> 
    <td>User Name :</td> 
    <td><form:input path="name" /></td> 
    </tr> 
    <tr> 
    <td>Password :</td> 
    <td><form:password path="password" /></td> 
    </tr> 
    <tr> 
    <td>Gender :</td> 
    <td><form:radiobutton path="gender" value="M" label="M" /> <form:radiobutton 
    path="gender" value="F" label="F" /></td> 
    </tr> 
    <tr> 
    <td>Country :</td> 
    <td><form:select path="country"> 
    <form:option value="0" label="Select" /> 
    <form:option value="India" label="India" /> 
    <form:option value="USA" label="USA" /> 
    <form:option value="UK" label="UK" /> 
    </form:select></td> 
    </tr> 
    <tr> 
    <td>About you :</td> 
    <td><form:textarea path="aboutYou" /></td> 
    </tr> 
    <tr> 
    <td>Community :</td> 
    <td><form:checkbox path="community" value="Spring" 
    label="Spring" /> <form:checkbox path="community" value="Hibernate" 
    label="Hibernate" /> <form:checkbox path="community" value="Struts" 
    label="Struts" /></td> 
    </tr> 
    <tr> 
    <td></td> 
    <td><form:checkbox path="mailingList" 
    label="Would you like to join our mailinglist?" /></td> 
    </tr> 
    <tr> 
    <td colspan="2"><input type="submit" value="Register"></td> 
    </tr> 
</table> 
</form:form> 
<c:if test="${fn:length(userList) > 0}"> 
<table cellpadding="5"> 
    <tr class="even"> 
    <th>Name</th> 
    <th>Gender</th> 
    <th>Country</th> 
    <th>About You</th> 
    </tr> 
    <c:forEach items="${userList}" var="user" varStatus="status"> 
    <tr class="<c:if test="${status.count % 2 == 0}">even</c:if>"> 
    <td>${user.name}</td> 
    <td>${user.gender}</td> 
    <td>${user.country}</td> 
    <td>${user.aboutYou}</td> 
    </tr> 
    </c:forEach> 
</table> 
</c:if> 
</body> 
</html> 

내 JSP 페이지를 실행할 때이 코드는 전혀 표시되지 않습니다. 전체 소스 코드는 다음과 같습니다.jstl 코드 문제

<c:if test="${fn:length(userList) > 0}"> 
    <table cellpadding="5"> 
     <tr class="even"> 
      <th>Name</th> 
      <th>Gender</th> 
      <th>Country</th> 
      <th>About You</th> 
     </tr> 
     <c:forEach items="${userList}" var="user" varStatus="status"> 
      <tr class="<c:if test="${status.count % 2 == 0}">even</c:if>"> 
       <td>${user.name}</td> 
       <td>${user.gender}</td> 
       <td>${user.country}</td> 
       <td>${user.aboutYou}</td> 
      </tr> 
     </c:forEach> 
    </table> 
</c:if> 

답변

2

JSTL이 전혀 설치되지 않은 경우에 발생할 수 있습니다. 이를 확인하려면 웹 브라우저에서 페이지를 마우스 오른쪽 버튼으로 클릭하고 소스보기을 선택하십시오. HTML 소스 중 JSTL 태그를 분석하지 않으면 실제로 설치되지 않았다는 의미입니다. JSTL JAR 파일을 /WEB-INF/lib 폴더에 넣어야합니다. Tomcat 6.x 이상에서는 jstl-1.2.jar 파일 만 삭제하면됩니다 (web.xml이 Servlet 2.5 사양으로 선언되었는지 확인하십시오).

그러나 HTML 소스에 JSTL 태그가 표시되지 않으면 조건 ${fn:length(userList) > 0}이 항상 false임을 의미합니다. 요청 속성으로 비어 있지 않은 userList을 넣음으로써 이것이 사실이 아닌지 확인해야합니다.

그런데 ${fn:length(userList) > 0}${not empty userList}으로 단순화 할 수 있습니다.

+0

java.lang.NoSuchFieldError : deferredExpression 오류가 표시되지 않습니다. – theJava

+0

그러면 클래스 경로가 여러 버전의 JSTL 라이브러리로 오염됩니다. 'jstl.jar'과'standard.jar'만이 아니라'jstl-1.2.jar' 만 가지고 있는지 확인하십시오. – BalusC