2016-06-07 1 views
0

J'ai essayé d'inclure shufflejs dans un portlet Liferay (6.2).Comment utiliser les webjars dans un portlet Liferay?

  1. J'ai ajouté la dépendance suivante à mon dossier pom.xml:

    <dependency> 
        <groupId>org.webjars.bower</groupId> 
        <artifactId>shufflejs</artifactId> 
        <version>4.0.0</version> 
        <scope>compile</scope> 
    </dependency> 
    
  2. Je confirme que sur mon serveur tomcat, le webapps/my-portlet/WEB-INF/lib/shufflejs-4.0.0.jar est présente et contient, en son sein, la META-INF/resources/webjars/shufflejs/4.0.0/dist/shuffle.js
  3. J'ai inclus la ligne suivante dans mon fichier liferay-portlet.xml:

    <header-portlet-javascript> 
        /webjars/shufflejs/4.0.0/dist/shuffle.js 
    </header-portlet-javascript> 
    
  4. Quand je charge ma page de portlet avec mon navigateur, je reçois tout sauf que je reçois un « 404 Not Found » erreur pour http://localhost:20080/my-portlet/webjars/shufflejs/4.0.0/dist/shuffle.js?browserId=other&minifierType=js&languageId=en_US&b=6210&t=1465296591338

Qu'est-ce que je manque?

Merci

Répondre

0

J'ai trouvé la cause de mes problèmes. J'ai déployé mon portlet et exécuté le portail dans Eclipse avec JRebel. Lorsque je déploie/exécute mon portlet autonome sans JRebel, cette ressource est trouvée. De plus, je suis capable d'abaisser le portail et de le ramener dans Eclipse/JRebel - maintenant la ressource peut être trouvée.

J'ai rencontré des problèmes similaires lors de l'exécution d'Eclipse/JRebel auparavant (voir Liferay: perform an action when a -LocalServiceUtil is available). Dans l'ensemble, Eclipse/JRebel est génial, mais parfois un peu de maladresse se produit lors du déploiement de portlets.

1

En supposant que vous utilisez un conteneur Servlet 3.0, vous avez l'URL erronée. Vous devez utiliser:

<header-portlet-javascript> 
    /webjars/shufflejs/4.0.0/dist/shuffle.js 
</header-portlet-javascript> 

Selon le webjars documentation:

Instructions pour Servlet 3

Avec tout Servlet 3 conteneur compatible, les WebJars qui se trouvent dans le répertoire WEB-INF/lib sont automatiquement mis à disposition sous forme de ressources statiques. Cela fonctionne parce que n'importe quoi dans un répertoire META-INF/resources dans un JAR dans WEB-INF/lib est automatiquement exposé comme une ressource statique.

Notez cette documentation indique que vous devez utiliser webjars/shufflejs/4.0.0/dist/shuffle.js, mais un peu d'expérimentation avec la config Liferay <header-portlet-javascript> conduit à la nécessité de la précédente / comme Liferay concaténera cette URL sur la fin du nom de portlet pour former l'URL de ressource Liferay complète.

+0

J'ai essayé cela avant, et pour être sûr, je l'ai essayé à nouveau et cela n'a pas fonctionné. Tout d'abord le 'liferay-portlet.xml' aime ses documents provenant du répertoire racine' webapp' et pour d'autres éléments ('webapp/resources/css/*' et 'webapp/resources/js/*' doivent être référencés à partir de avec '/ resource/...') – Yoshiya

+0

Ce commentaire n'est tout simplement pas vrai ... Liferay ne nécessite aucune sorte de structure de dossier à l'intérieur de votre webapp.Peut-être que vous confondez cela avec la convention JSF pour '/ resources'? En outre, webjars utilise la fonctionnalité servlet 3.0 en ce que n'importe quel fichier jar dans son dossier lib exposera toutes les ressources contenues dans son répertoire 'META-INF/resources'. – Lucas

+0

Vos informations ci-dessus sont correctes, mais cela n'a pas résolu mon problème - puisque mon problème a persisté même en suivant vos informations ci-dessus. J'ai mis à jour ma question et y ai répondu avec des informations sur la cause de mon problème. – Yoshiya