JSTL - результат не соответствует ожидаемому - PullRequest
1 голос
/ 12 января 2012

Ниже приведен код, который у меня есть в index.jsp с использованием jstl 1.2.

 <%@ taglib prefix = "c" uri="http://java.sun.com/jstl/core"%>
 <% String[] setName = {"Hello", "you", "are", "using", "jstl", "in", "jsp"};
 request.setAttribute("getName", setName);
 %>
 <html>
 <body>
 <table>
 <tr><td>Print</td></tr>
 <c:forEach var="itemName" items="#{getName}" >
 <tr>
 <td>${itemName}</td>
 </tr>
 </c:forEach>
 </table>
 </body>
 </html>

Вывод, который я ожидал, выглядит следующим образом

 Print
 Hello
 you
 are
 using
 jstl
 in
 jsp

Однако ниже я получаю

  Print
  #{name}

Пожалуйста, дайте мне знать, где мне не хватает

Ниже приведен единственный файл JAR, который у меня есть в папке WEB-INF / lib jstl-1.2.jar

Спасибозаранее

Fahim

Примечание: Добавление тегов Java и JSP, если человек, владеющий Java и JSP, может знать JSTL тоже ...

Ответы [ 6 ]

0 голосов
/ 13 января 2012

Ниже приведен последний код, который я использую, и он работает ...

Публикация, чтобы кто-то мог его использовать ... Может помочь мне завтра;)

 <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 

 "http://www.w3.org/TR/html4/loose.dtd">

 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
 <% String[] setName = {"Hello", "you", "are", "using", "jstl", "in", "jsp"};
 request.setAttribute("getName", setName);
 %>
 <html>
 <body>
 <table>
 <tr><td>Print</td></tr>
 <c:forEach var="itemName" items="#{getName}">
 <tr>
 <td>${itemName}</td>
 </tr>
 </c:forEach>
 </table>
 </body>
 </html>

Обучение: Я использовал <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %> вместо <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

0 голосов
/ 12 января 2012

Здесь

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

Вы указываете неправильный URL-адрес taglib JSTL. Это для JSTL 1.0. После JSTL 1.1 требуется /jsp в пути. См. Также документацию библиотеки тегов JSTL 1.1 .

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

Что касается кода (и ответа на все дубликаты ответов, в которых жалуются на использование ${}), то синтаксис #{} будет работать только внутри JSP, когда вы нацеливаетесь на совместимый с Servlet 2.5 / 2.1 контейнер с * Servlet 2.5, соответствующий спецификации web.xml. Tomcat 6.0 является примером такого контейнера. #{} действительно не будет работать в тегах JSP в старых контейнерах, таких как Tomcat 5.5 или более старых.

Для ясности и во избежание путаницы среди начинающих лучше использовать ${} все время в тегах JSP. Также лучше использовать самодокументируемые имена переменных.

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<% 
    String[] names = {"Hello", "you", "are", "using", "jstl", "in", "jsp"};
    request.setAttribute("names", names);
%>
<!DOCTYPE html>
<html lang="en">
    <head>
        <title>JSTL demo</title>
    </head>
    <body>
        <table>
            <tr><td>Print</td></tr>
            <c:forEach items="${names}" var="name">
                <tr><td>${name}</td></tr>
            </c:forEach>
        </table>
    </body>
</html>

Смотри также:

0 голосов
/ 12 января 2012

Вы должны ссылаться на элементы, используя язык выражений, например $ {name}

Вы используете # вместо $ перед именем

Дайте мне знать, если это разрешится.

0 голосов
/ 12 января 2012

#{name} должно быть как ${name}

ой! может быть банки, связанные с JSTL. проверьте thins ссылку для тех банок для включения в ваш проект

0 голосов
/ 12 января 2012

В JSTL 1.2 вы не хотите использовать # {name} в чистом JSP, это всего лишь артефакт JSF.Вместо этого просто используйте $ {name}.

0 голосов
/ 12 января 2012

#{name} не является допустимой ссылкой на переменную Java - похоже, вы путаете ее с селектором JQuery.В любом случае попробуйте просто использовать items = "$ {name}"

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