jstl代码问题

时间:2010-12-21 17:33:38

标签: jsp jstl

<%@ 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页面时,这段代码根本没有出现。完整的源代码如下。

<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>

1 个答案:

答案 0 :(得分:2)

完全没有安装JSTL时会发生这种情况。要检查此项,请在webbrowser中右键单击页面,然后选择查看源。如果你看到所有HTML源代码中的JSTL标签都未解析,那么这意味着它确实没有安装。您需要删除/WEB-INF/lib文件夹中的JSTL JAR。对于Tomcat 6.x或更新版本,只需删除其中的jstl-1.2.jar文件(并确保根据Servlet 2.5规范声明web.xml)。

但是,如果您在HTML源代码中没有看到JSTL标记,则表示条件${fn:length(userList) > 0}始终为false。您需要通过将非空userList作为请求属性来确保不是这种情况。

顺便说一下,${fn:length(userList) > 0}也可以简化为${not empty userList}