Comment utiliser scriptlet dans javascript

Quelqu'un peut-il tester cet exemple et partager les résultats? Http://timothypowell.net/blog/?p=23
Quand je fais:

var myVar = '<% request.getContextPath(); %>'; alert(myVar); 

Je reçois: '<% request.getContextPath(); %>'. '<% request.getContextPath(); %>'.

Supprime les citations simples jointes de '<% request.getContextPath (); %> '; Donne une erreur de syntaxe. Comment puis-je utiliser le scrptlet ou l'expression dans une fonction js?

EDIT: ce lien a une explication qui m'a aidé:
Http://www.codingforums.com/showthread.php?t=172082

Il semble que vous placez le code JSP dans une page JavaScript, ou au moins dans une page non-JSP. Les scripts ne peuvent être inclus dans une page JSP (généralement configurée pour être * .jsp).

La déclaration telle que présentée, si elle est traitée par le compilateur JSP, entraînerait que myVar soit égal à '' en tant que format scriptlet que vous utilisez <% …%> exécute le code Java entre les balises, mais ne renvoie pas de résultat.

Donc, pour utiliser cette étiquette, vous devez écrire manuellement une valeur dans le flux de sortie de la demande. Pour obtenir la fonctionnalité souhaitée, vous devez effectuer les opérations suivantes:

  make sure your code is in a JSP page use var myVar = '&lt;%= request.getContextPath() %&gt;'; (note the equals sign) 

Selon tout ce qui précède, les scriptlets sont considérés comme de mauvaises pratiques dans la plupart des cas. Pour la plupart des cas, vous devriez utiliser des expressions JSTL et des balises personnalisées.

Cette ligne de code doit être placée dans une balise HTML <script> dans un fichier .jsp . De cette façon, le JspServlet traitera les scriptlets (et d'autres expressions spécifiques JSP / EL).

 <script>var myVar = '<%= request.getContextPath() %>';</script> 

Notez que <%= %> est la syntaxe correcte pour imprimer une variable, le <% %> ne le fait pas.

Ou si cela est destiné à être servi dans un fichier .js autonome, vous devez renommer le .jsp et ajouter le suivant au haut du fichier (et modifier l'URL <script src> conséquence):

 <%@page contentType="text/javascript" %> ... var myVar = '<%= request.getContextPath() %>'; 

De cette façon, le JspServlet le traitera et le navigateur sera chargé d'interpréter le corps de réponse JSP comme JavaScript au lieu de HTML.


Indépendamment du problème concret, notez que les scriptlets sont considérés comme des pratiques médiocres . Utilisez EL.

 var myVar = '${pageContext.request.contextPath}'; 

Vous ne pouvez pas exécuter scriptlet dans javascript en lui donnant une extension .js normale. Cependant, vous pouvez donner à votre .js l'extension de fichier de .jsp puis, et vous lier directement à celui-ci:

 <script type="text/javascript" src="/script.jsp"></script> 

Et maintenant vous pouvez utiliser jsp dans votre javascript comme:

 var someMessage = "${someMessage}" var anotherMessage = "${anotherMessage}"/>" 

Cette action est complètement valide car ce qui détermine si un fichier est un fichier javascript ou non, c'est quel type de média MIME. Vous pouvez définir MIME à partir de JSP en utilisant:

 <%@ page contentType="text/javascript" %> 
 var myVar = '<%=request.getContextPath() %>'; alert(myVar); 

Vous avez oublié de mettre = avant la demande et l'enlever; Après getContextPath ()