ClassCastException
Si vous obtener ce message en mode portlet : java.lang.ClassCastException: org.esupportail.lecture.portlet.FacesPortlet cannot be cast to javax.portlet.Portlet
C'est vraisemblablement parce que vous avez fait un déploiement en mode servlet avant sans avoir fait un clean avant de redéployer en mode portlet.
Pour résoudre ce problème très rapidement il suffit de :
- Supprimer le fichier portlet-api-1.0.jar du répertoire WEB-INF\lib de l'application esup-lecture déployée
- Relancer le serveur d'applications
Comprendre le fonctionnement du fichier mapping.xml
Le but du fichier mapping.xml est double :
- Permettre de sélectionner une feuille de transformation XSL en fonction de la source à afficher
- Permettre de sélectionner dans la source l'élément répétable (annonce ou item pour utiliser un terme plus générique) sur lequel sera appliqué la feuille de transformation XSL précédemment citée
Sélection de la feuille de transformation XSL
Pour chaque entrée de <mapping> du fichier mapping.xml on va trouver un attribut qui va nous permettre de sélectionner une feuille de transformation XSL. Ce sera sourceURL, DTD, xmlType, xmlns ou rootElement (dans cet ordre de priorité).
Signification
<sourceURL> --> Si la source correspond à cette url ou dont l'url commence par cette valeur alors c'est ce mapping qui est pris en compte
<dtd> --> Si la source a une dtd et que cette dtd correspond à cet attribut <dtd> alors c'est ce mapping qui est pris en compte
<xmlType> --> Si la source a un xsd et que ce xsd correspond à cet attribut <xmlType> alors c'est ce mapping qui est pris en compte
<xmlns> --> Si l'élément root du XML de ta source est dans un espace de nom qui correspond à cet attribut <xmlns> alors c'est ce mapping qui est pris en compte
<rootElement> --> Si l'élément root du XML de ta source correspond à cet attribut <rootElement> alors c'est ce mapping qui est pris en compte
sélectionner dans la source de l'élément répétable
<itemXPath> --> sert comme XPath pour définir quels éléments répétables dans le XML de ta source vont former les Items à afficher
<XPathNameSpace> --> Si le XML de ta source contient des espaces de nom ton Xpath peut aussi en contenir (ex : itemXPath="/rdf:RDF/default:item") --> Dans ce cas il faut que tu précises à quoi correspondent les espaces de nom rdf: et default: pour que le moteur Xpath fonctionne sur le XMl de ta source --> <XPathNameSpace> sert à ça --> Ex :