2013-08-18 1 views
0

Je transfère mon application Spring MVC Servlet pour qu'elle soit compatible avec le déploiement dans Liferay. Je convertis l'application en un portlet Spring MVC. Mon application utilise html + javascript comme interface. Suis incapable d'importer des fichiers .js ou .css dans mon index.html maintenant parce que les URL relatives ne fonctionnent pas. Toute aide à cet égard?Portail MVC Liferay-Spring important plusieurs fichiers .js

+0

s'il vous plaît montrez-moi la structure de votre projet web, et l'emplacement de y nos pages html –

Répondre

0

Vos références sont liés à vos références de contexte d'application web, ce qui est normalement le contexte ROOT portail y compris l'instance de portlet et d'autres constructions dépendantes (le thème lié LR) dans ce cas et pas le portlet (votre application) contexte que vous assumez. Ainsi, la solution consiste à utiliser une variable globale spécifique à l'instance de portail avec le préfixe devant vos définitions de chemin. Pour ce faire, vous devez construire ce chemin avant de rendre le contenu de votre page HTML. Ceci est généralement réalisé en utilisant certaines classes d'utilitaires Liferay, par ex. en cas d'un JSP comme celui-ci:

<link href="<%= PortalUtil.getStaticResourceURL(request, request.getContextPath() + "/css.jsp", portlet.getTimestamp()) %>" 

Apparemment, au cas où vous ne disposez pas de script côté serveur comme le JSP (BTW que je pense est pas une bonne idée), vous devez résoudre ce en utilisant une autre Java facilité de couche pour écrire dans votre code HTML avant qu'il ne soit rendu par le navigateur.

+0

C'est exactement ce que mon problème est. J'ai le frontal html pur et donc je ne peux pas utiliser les balises JSP etc. Le portage de l'implémentation de FE vers JSP est trop lourd en ce moment et j'essaie de trouver une solution à ma situation. Pure HTMl + Spring et j'ai besoin d'accéder aux ressources dans le portlet. Plus d'aide concernant l'injection de la valeur de Java? Je vous remercie. – user1587865

+0

HTML n'est pas un langage dynamique côté serveur! Vous utilisez des langages dynamiques côté serveur pour générer le code HTML qui est ensuite rendu par le navigateur du côté client. => Vous ne pouvez pas "injecter" dedans! Ce que vous pouvez faire est d'utiliser du code JavaScript dans votre HTML pour récupérer ces valeurs du côté du serveur pendant le processus de rendu. Regardez cela autour de la section JavaScript pour voir comment accéder aux services http://www.liferay.com/documentation/liferay-portal/6.1/user-guide/-/ai/accessing-liferay-services –

+0

Par Inject, je voulais dire demander un moyen par lequel je peux obtenir les valeurs de Java dans mes fichiers js. Peut-être comme un appel de service au BE. Je pense que le lien que vous avez fourni m'aidera. Je vais explorer dans ces lignes et mettra à jour en arrière. Je vous remercie. – user1587865

1

Si vous fournissez l'emplacement des fichiers javascript et css dans votre fichier liferay-portlet.xml, il sera automatiquement ajouté. Vous n'avez pas à ajouter explicitement la même chose dans votre fichier html/jsp.

dans votre liferay-portlet.xml, veuillez ajouter les attributs suivants avec le bon chemin de fichier.

<header-portlet-css>/css/main.css</header-portlet-css> 
<header-portlet-javascript>/js/main.js</header-portlet-javascript> 

Aussi, si vous souhaitez accéder à toutes les ressources statiques comme l'image ou quoi que ce soit d'autre, vous pouvez utiliser le chemin comme celui-ci

<img src='<%=request.getContextPath()%>/images/gear.png' class='settings' /> 

où la structure est comme ce

-portlet --- docroot ------ images -------- gear.png

+0

Oui .. Cela fonctionne, mais je voulais accéder à toutes ces ressources statiques .. images etc. – user1587865

+0

réponse éditée .. :) –

Questions connexes