2011-06-20 2 views
0

J'ai écrit une application Struts 2 et je veux la localiser. Maintenant j'utilise javascript et je voudrais mettre les scripts de mon modèle HTML dans un propre fichier javascript. Quand je le fais, mes balises s: text ne sont pas rendues (bien sûr).Comment localiser des fichiers javascript dans une application Struts 2

Comment puis-je localiser correctement mes fichiers javascript avec Struts 2? Je voudrais éviter d'utiliser une autre technique que les fichiers de propriétés que j'utilise actuellement.

Merci, Christian

+0

pouvez-vous poster une partie de votre code actuel? –

+0

Je ne sais pas si mon code est d'aucune aide ici :-) – Christian

Répondre

1

Si vous voulez coller avec votre ressource Bundles de retour au serveur, d'une façon possible serait de sauvegarder vos fichiers javascript comme .jsp fichier et les servir avec une action si cette façon, vos jambes les balises dans vos fichiers javascript auront une chance de récupérer les données du serveur et de renvoyer le fichier sur demande.
Personnellement, je préfère conserver les messages des clients dans les fichiers javascript et les messages du serveur dans les regroupements de ressources. De cette façon, vous pouvez enregistrer un traitement. JSP IMHO.

+0

Oui j'ai deviné que je dois le faire comme ça. Je n'aime pas le traitement de struts d'un fichier js aussi. – Christian

0

Vous pouvez utiliser un champ masqué dans votre JSP et transmettre son ID au fichier JavaScript externe et obtenir sa valeur comme suit.

Dans votre JSP,

<s:hidden id="warning" value="%{getText('propertyKey')}"/> 

(champ caché poplated avec la valeur de la clé de la propriété dans le groupe de ressources)

Appelez votre méthode JS externe de la même JSP,

<s:a href="%{deleteSelected}"> 
<img src="<s:url value='/images/delete.gif'/>" border="none" 
     onclick="javascript:return displayWarning('warning')"/> 
</s:a> 

Dans le fichier JavaScript externe,

function displayWarning(message) { 
    var ret = true; 
    ret = confirm(document.getElementById(message).value); 
    return ret; 
} 
+0

Les champs masqués sont en fait une option. Ce n'est pas la solution dont je suis vraiment content, mais c'est une solution. Peut-être que je vais créer un tableau JavaScript dans l'en-tête du template jsp alors. Merci pour la suggestion. – Christian

+0

son ok ... je voulais juste vous montrer un chemin .. :) BTW si vous avez trouvé une solution, s'il vous plaît ne pas oublier de poster votre solution ... j'ai aussi le même problème.Merci. –

0
<script type="text/javascript"> 

var mytxt='<s:text name="my.text.prop" />'; 

alert(mytxt); 

</script> 

Ceci est également possible, mais vous ne pouvez pas les inclure dans une fonction. Vous devez affecter les propriétés pertinentes à la variable JS globale au moment du chargement de la page. Presque le même concept plus mince à utiliser des variables cachées.