Problem tkwi moim zdaniem w pliku konfiguracyjnym web.xml. Podczas wykonywania pliku index.jsp o zawartości:
<%@ taglib uri="/c.tld" prefix="c" %>
<html>
<head>
<title>Test JSTL!!!</title>
</head>
<body>
<c:forEach var="i" begin="1" end="10" step="1">
<c:out value="${i}" /><br />
</c:forEach>
<c:url value="base">
<c:param name="param" value="ABC"/>
</c:url>
</body>
</html>
Otrzymuję rezultat:
${i}
${i}
${i}
${i}
${i}
${i}
${i}
${i}
${i}
${i}
base?param=ABC
nie mam pojęcia dlaczego tak sie dzieje, poniżej przedstawiam plik konfiguracyjny 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>
<servlet>
<servlet-name>test01</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>test01</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<taglib>
<taglib-uri>/c.tld</taglib-uri>
<taglib-location>/WEB-INF/tld/c.tld</taglib-location>
</taglib>
</web-app>
tak samo dzieje się gdy chcę np zmienną utworzoną przez springa odczytać w JSTL to mi wypisuje: ${zmienna} poniżej plik konfiguracyjny dla springa(test01-servlet.xml):
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" > <beans> <bean name="/my.html" class="qman.viewModTest"/> <bean id="dbBean" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/> <property name="url" value="jdbc:oracle:thin:@192.168.0.2:1521:ORCL"/> <property name="username" value="username"/> <property name="password" value="pass"/> </bean> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <property name="cache" value="false"/> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean> </beans>
Musisz zezwolić na
Musisz zezwolić na używanie JSTL EL na stronie, na której używasz EL-ków Chyba nie da sie zrobic tego globalnie nigdy nie sprawdzałem.
Smerf
<%@ page isELIgnored="false"
<%@ page isELIgnored="false" %>
lub jak polecał Gabriel zacznij używać Servletow 2.4, muszisz dodatkowo ustawić w web.xml
Smerf
Moze sprawdz to?
Jak dziala na pewno.
Deklaracja w JSP:
<%@ taglib uri="/tags/jstl-c" prefix="c"%>
Deklaracja w web.xml:
/tags/jstl-c
/WEB-INF/tld/c.tld
Co jeszcze.
Sprawdz czy masz poprawne biblioteki: jstl.jar, standard.jar
tzn. czy sa one dla Serlvetow 2.3 / JSP 1.2 a nie dla 2.4 / 2.0
Bo jak widze korzystasz z 2.3. Jesli mozesz to polecam 2.4 / 2.0 jest lepsze.
Sprawdz czy w c.tld masz dla tagu out
<rtexprvalue>true</rtexprvalue>c.tld
<name>value</name> <required>true</required> <rtexprvalue>true</rtexprvalue>Wiecej pomyslow nie mam w tej chwili.
Pozdrawiam,
Gabriel.