Какие файлы JAR необходимы для использования Eclipse для использования JSTL, поэтому он в конечном счете работает с GAE/J?
Я пытаюсь дольше, чем я хотел бы признать, что JSTL работает под Eclipse (и, в конечном счете, под GAE/J). Я загрузил Eclipse, расширение Google App Engine для Eclipse и JSTL (http://download.java.net/maven/1/jstl/jars/ - jstl-1.2.jar находится в WEB- INF\lib).
Мой код ниже вместе с выходом:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<HTML><HEAD><TITLE>Test Page</TITLE></HEAD><BODY>
Test Page
<c:set var="myvar" value="3"/>
</BODY></HTML>
Ошибка, которую я получаю:
The tag handler class for "c:set" (org.apache.taglibs.standard.tag.rt.core.SetTag) was not found on the Java Build Path
test.jsp
[my app path and name]
line 8
JSP Problem
Из последнего сообщения на этой странице я не думаю, что мне нужен стандартный .jar(http://forums.sun.com/thread.jspa?threadID=701267), и в любом случае я не удалось найти на сайте Oracle download.java.com вместе с jstl jar.
ИЗМЕНИТЬ 4: Работает сейчас - Шаги:
1) Используйте версию Apache
2) Фактически включайте файл jar в путь сборки (щелкните правой кнопкой мыши проект eclipse и нажмите "Свойства" → "Путь сборки Java" → "Библиотеки" → Добавить классную папку...; war/WEB-INF/lib, по-видимому, не находится на построить путь по умолчанию)
3) Добавьте файл c.tld в war/WEB-INF/tld
Сделайте ваш web.xml похожим:
<\?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>JSTLExample</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<jsp-config>
<taglib>
<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/tld/c.tld</taglib-location>
</taglib>
</jsp-config>
</web-app>
Содержимое тестового jsp файла:
<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!-- Taglib -->
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Test Apache ServiceMix with JSTL</title>
</head>
<body>
This is a testpage.
<%= "hello" %>
<c:forEach var="i" begin="1" end="10" step="1">
<c:out value="${i}" />
<br />
</c:forEach>
</body>
</html>
Ответы
Ответ 1
Убедитесь, что ваше корневое объявление web.xml
соответствует хотя бы Servlet 2.4.
<web-app
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<!-- Config here. -->
</web-app>
Или, если ваш servletcontainer поддерживает его, предпочитайте 2.5:
<web-app
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<!-- Config here. -->
</web-app>
O, если он поддерживает последнюю версию3.0
<web-app
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<!-- Config here. -->
</web-app>
В противном случае все отпадет до наименее поддерживаемого modus, и taglib могут сломаться так.
Также убедитесь, что у вас нет свободных файлов tld
, перемещающихся в пути к классам (в частности, в папке /WEB-INF/lib
), они будут сталкиваться с файлами в файлах JAR. О, также убедитесь, что вы не определяли вручную tlds в web.xml
, держите его в чистоте.
Ответ 2
У меня была такая же проблема, и я просто поставил префикс = "c" в конце определения taglib
до:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
после:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
И все предупреждения исчезают из Eclipse.
Ответ 3
Вам нужно указать эту зависимость только в вашем Maven POM:
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
В моем коде это обеспечило все, что мне нужно для следующего JBL taglib:
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
Ответ 4
Насколько я знаю, вам нужны jstl.jar и standard.jar. Поместите их под WEB-INF/lib.
Ответ 5
Добавьте taglibs-standard-impl-1.2.5 из Apache в путь сборки проекта. Это может решить проблему.