Scratchpad

If you are new to Scratchpad, and want full access as a Scratchpad editor, create an account!
If you already have an account, log in and have fun!!

READ MORE

Scratchpad
Advertisement


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!

Advertisement