Come far funzionare le jsp 2.0 (servlet 2.4) in OpenCMS[]
Huston, abbiamo un problema?[]
Una volta installato OpenCMS, ci sono forti possibilità che le taglib funzionino in maniera non corretta. Per verificare la corretta funzionalità delle taglib si può usare la semplice jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %> <%@ taglib prefix="x" uri="http://java.sun.com/jstl/xml" %> <html> <head> <title>JSTL: XML Support -- Parse</title> </head> <body bgcolor="#FFFFFF">
<h3>Parse from Objects and URLs
<c:set var="xmlText"> <a> <b> <c> foo </c> <d> bar </d> </a> </c:set> <x:parse var="a" xml="${xmlText}" /> <x:out select="$a//c"/> <x:out select="$a/a/d"/> </body> </html>
Se vedete comparire un messaggio di errore ci sono probabilmente problemi di incompatibilità tra il vostro ambiente di servlet (2.4) e le librerie fornite con OpenCMS (compatibili con 2.4).
Risoluzione[]
1) in <opencms>/WEB-INF/web.xml sostituire i primi due tag
<!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>
con
<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">
2) in WEB-INF/opencms.tld assicurarsi che tutti i tag <rtexprvalue> siano settati a TRUE
<rtexprvalue>true<rtexprvalue>
3) Scaricare l'ultima versione di Xalan nella distribuzione classica (quella con più jar, al momento è xalan-j_2_7_0-bin.tar.gz ) e scompattarla.
4) Scaricare l'ultima versione delle jakarta-taglibs-standard (testato con 1.1.2) e scompattarla
5)Scaricare l'ultima versione delle librerie Jaxen e scompattarle
6) Andare nella directory <opencms>/WEB-INF/lib e CANCELLARE i seguenti files
dom.jar jaxen-full.jar jaxp-api.jar jdbc2_0-stdext.jar jstl-examples.jar sax.jar saxpath.jar xalan.jar
Nota: questi files sono installati dal modulo com.alkacon.documentation.examples_jstl_3.2.0 contenenti gli esempi delle jslt ... potete anche disinstallarlo o non installarlo affatto in alternativa alla cancellazione diretta dei files. 7) Cancellare anche
jaxen-1.1-beta-4.jar
e le versioni delle taglib incluse,
standard-1.0.6.jar jstl-1.0.6.jar
8) Copiare nella cartella i 4 jar contenuti in Xalan
serializer.jar xalan.jar xercesImpl.jar xml-apis.jar
9) Copiare nella cartella i 2 jar contenuti in Jakarta-taglibs
standard.jar jslt.jar
10) Copiare nella cartella il jar contenuto in Jaxen
jaxen-1.1.1.jar
11) Riavviare il tomcat
Ma non funziona lo stesso![]
Ok, avete riavviato, e siete corsi a cliccare la jsp presentata all'inizio e non funzionava comunque (According to TLD or attribute directive in tag file, attribute xml does not accept any expressions error) Al tempo... passando alla versione 2.0 di jsp si deve scrivere il codice in maniera diversa.
1) Rimpiazzare nel codice di chiamata delle taglib "http://java.sun.com/jstl/..." con "http://java.sun.com/jsp/jstl/" Per cui, nel codice d'esempio le prime due righe diventeranno:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
2) Cambiare i richiami alle funzioni di OpenCMS. Ad esempio "${opencms.uri}" diventa "%(opencms.uri)"
<cms:contentload collector="singleFile" param="${opencms.uri}" editable="true"> ... <cms:contentload />
diventa
<cms:contentload collector="singleFile" param="%(opencms.uri)" editable="true"> ... <cms:contentload />
Questo è tutto... a questo punto avete nelle vostre mani uno strumento di rara potenza... buon divertimento con le taglib!