Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Проблемы с JSTL


Автор: boroda 22.6.2007, 13:18
Добрый день всем!

У меня проблема с JSTL, мои тэги не видят выражения.

Есть страница
Код

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="c-rt" uri="http://java.sun.com/jstl/ea/core-rt"%>
<jsp:useBean id="PB" class="nikitova.HRTool.bean.PageBean" scope="request"/>
<html>
  <body>
    <form name="addStep1" action="" method="POST">
         <c:out value="${PB.zodiac}"/><br>
         <c:out value="<%=PB.getZodiac()%>"/><br>
    </form>
  </body>
</html>


В случае с <c:out value="${PB.zodiac}"/> на страницу выводиться ${PB.zodiac}
Если пишу <c:out value="<%=PB.getZodiac()%>"/>, то содержимое метода getZodiac() 
(getZodiac() возвращает ArrayList)

файл web.xml
Код

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
    <display-name>fooApp</display-name>
    <description>fooApp</description>
    <taglib>
      <taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
      <taglib-location>/WEB-INF/c.tld</taglib-location>
    </taglib>
    <taglib>
      <taglib-uri>http://java.sun.com/jstl/core_rt</taglib-uri>
      <taglib-location>/WEB-INF/c-rt.tld</taglib-location>
    </taglib>
    <taglib>
        <taglib-uri>http://java.sun.com/jstl/ea/fmt</taglib-uri>
        <taglib-location>/WEB-INF/fmt.tld</taglib-location>
    </taglib>
    <taglib>
        <taglib-uri>http://java.sun.com/jstl/ea/fmt-rt</taglib-uri>
        <taglib-location>/WEB-INF/fmt-rt.tld</taglib-location>
    </taglib>
    <taglib>
        <taglib-uri>http://java.sun.com/jstl/ea/sql</taglib-uri>
        <taglib-location>/WEB-INF/sql.tld</taglib-location>
    </taglib>
    <taglib>
        <taglib-uri>http://java.sun.com/jstl/ea/sql-rt</taglib-uri>
        <taglib-location>/WEB-INF/sql-rt.tld</taglib-location>
    </taglib>
    <taglib>
        <taglib-uri>http://java.sun.com/jstl/ea/xml</taglib-uri>
        <taglib-location>/WEB-INF/x.tld</taglib-location>
    </taglib>
    <taglib>
        <taglib-uri>http://java.sun.com/jstl/ea/xml-rt</taglib-uri>
        <taglib-location>/WEB-INF/x-rt.tld</taglib-location>
    </taglib>
    
</web-app>


Теги все работают, не работают выражения тэгов.
В чем может быть проблема.

Заранее спасибо.

Автор: Tony 22.6.2007, 15:18
Sovetuju srazu ubrat' iz web.xml :
<taglib>
      <taglib-uri>http://java.sun.com/jstl/core_rt</taglib-uri>
      <taglib-location>/WEB-INF/c-rt.tld</taglib-location>
    </taglib>
....
I prosto pishen vjsp:
Код

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


i eshjo esli:
<jsp:useBean id="PB" class="nikitova.HRTool.bean.PageBean" scope="request"  beanName="PB"/>

Автор: boroda 22.6.2007, 15:38
спасибо, но 
до этого у меня в web.xml не было <taglib> + добавил beanName. Результат тот же

Автор: Tony 22.6.2007, 17:05
A esli prosto napisat' <%= PB.getZodiac() %> Rabotaet? 

Автор: boroda 22.6.2007, 17:27
Цитата(Tony @ 22.6.2007,  17:05)
A esli prosto napisat' <%= PB.getZodiac() %> Rabotaet?

Если просто написать то работает, но это не красиво как-то

Автор: Tony 22.6.2007, 18:09
Ne ne. Ja ne sovetuju pisat' skriptleti. Ja prosto sprosil rabotaet li bez jstl.

Автор: boroda 23.6.2007, 10:24
А-а без JSTL все работает. Просто странно как-то....

Автор: Tony 23.6.2007, 11:54
Ti eshjo mozhesh vivesti zna4enie tak ${PB.zodiac} esli jsp versii >= 2.0 

Автор: boroda 23.6.2007, 15:12
Цитата(Tony @ 23.6.2007,  11:54)
Ti eshjo mozhesh vivesti zna4enie tak ${PB.zodiac} esli jsp versii >= 2.0

Посмотрите внимательно мое первое сообщение, у меня как раз проблема в том
что я не могу вывести сообщение так ${PB.zodiac}, могу только вот так <%=PB.getZodiac()%>. 
Я как раз спрашиваю в чем может быть проблема? Поскольку данная ошибка для меня загадка.
 JSP у меня версии 2.0

Автор: Tony 23.6.2007, 15:28
Цитата(boroda @ 23.6.2007,  15:12)
Цитата(Tony @ 23.6.2007,  11:54)
Ti eshjo mozhesh vivesti zna4enie tak ${PB.zodiac} esli jsp versii >= 2.0

Посмотрите внимательно мое первое сообщение, у меня как раз проблема в том
что я не могу вывести сообщение так ${PB.zodiac}, могу только вот так <%=PB.getZodiac()%>. 
Я как раз спрашиваю в чем может быть проблема? Поскольку данная ошибка для меня загадка.
 JSP у меня версии 2.0

net. ne <c:out value=${} /> a prosto: ${}

Автор: boroda 23.6.2007, 15:50
Когда пишу ${PB.zodiac} и <c:out value="${PB.zodiac}"/>,
то рельзутат на странице один и тот же

вы выходе -->${PB.zodiac}

Автор: Ulysses4j 23.6.2007, 17:36
http://answers.google.com/answers/threadview?id=373340

http://p2p.wrox.com/archive/beginning_jsp/2003-03/19.asp

http://blogs.oracle.com/Didier/2006/03/20#a10

Или поменять версию web-app на 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">...

Или добавить в .jsp:
Код
<%@page isELEnabled="true"%>

Лучше первое, а если оно не пройдет, поставить контейнер поновее - каким пользуетесь, кстати?

Как написано в ссылке google, старый Tomcat (5.0)  еще может путать taglibs - но там разбираться черт ногу сломит.

Автор: Tony 23.6.2007, 19:21
Цитата(Ulysses4j @ 23.6.2007,  17:36)
http://answers.google.com/answers/threadview?id=373340

http://p2p.wrox.com/archive/beginning_jsp/2003-03/19.asp

http://blogs.oracle.com/Didier/2006/03/20#a10

Или поменять версию web-app на 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">...

Или добавить в .jsp:
Код
<%@page isELEnabled="true"%>

Лучше первое, а если оно не пройдет, поставить контейнер поновее - каким пользуетесь, кстати?

Как написано в ссылке google, старый Tomcat (5.0)  еще может путать taglibs - но там разбираться черт ногу сломит.

<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&quot;
     version="2.4">.

Eto esli jstl 1.1. Pomnju u menja problemi bil i s Tomcatom 5.5. Posle smeni shemi pomoglo. Tak 4to mozhet eto pomozhet. 

Код

<%@page isELEnabled="true"%>


Po umol4aniju vsklju4jon

Автор: Ulysses4j 23.6.2007, 19:44
Цитата(Tony @  23.6.2007,  20:21 Найти цитируемый пост)
Po umol4aniju vsklju4jon


Цитата
The default mode for JSP pages delivered using a Servlet 2.3 or earlier descriptor is to ignore EL expressions.

Автор: Tony 23.6.2007, 22:16
Teper' budem znat'.  

Автор: boroda 25.6.2007, 12:29
to Ulysses4jTony

Спасибо вам за ответ. Все работает. Проблема была как раз в том что нужно было укзать в web-app
Код

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


Что-то я круто стормозил т.к. в предыдущих проектах я это указывал. 

В любом случае еще раз спасибо.

Автор: Tony 25.6.2007, 14:31
boroda,  Postav' galo4ku, 4to tema reshena. Vdrug kto-to eshjo zaporitsja.

Автор: ochnev 9.12.2007, 18:10
Цитата(Tony @ 23.6.2007,  19:21)
Или поменять версию web-app на 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">...


Код

<%@page isELEnabled="true"%>


Po umol4aniju vsklju4jon

Мне не помогло переключение на 2.4.
И ещё, если Idea не врёт, вместо "isELEnabled" должен быть атрибут "isELIgnored". Что тоже не помогает.
Уже много раз работал с JSTL, а теперь всё сломалось. Даже не понятно, почему.
Tomcat 5.5.
Пошёл вешаться...

Автор: ochnev 9.12.2007, 22:05
Заработало.
Дело в том, что там что-то закэшировалось в CATALINA_HOME\work\Catalina
удалил оттуда кэш проблемного web-приложения, где были неправильно сформированные страницы.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)