проблема с кодом JSTL - PullRequest
       9

проблема с кодом JSTL

0 голосов
/ 21 декабря 2010
<%@ 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 Ответ

2 голосов
/ 21 декабря 2010

Это может произойти, если JSTL вообще не установлен. Чтобы проверить это, щелкните правой кнопкой мыши страницу в веб-браузере и выберите Просмотр источника . Если вы видите, что JSTL-теги не разбираются среди всего этого HTML-источника, это означает, что он действительно не установлен. Вам нужно удалить JSTL JAR в папку /WEB-INF/lib. Для Tomcat 6.x или новее достаточно удалить туда файл jstl-1.2.jar (и убедиться, что ваш web.xml объявлен в соответствии со спецификацией Servlet 2.5).

Но если вы не видите теги JSTL в источнике HTML, это означает, что условие ${fn:length(userList) > 0} всегда false. Вы должны убедиться, что это не так, указав непустой userList в качестве атрибута запроса.

Кстати, ${fn:length(userList) > 0} также можно упростить до ${not empty userList}.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...