La solution réelle fonctionne si les chaînes sont déjà dans le Javascript files.But ce qui se passe lorsque vous avez localisé des chaînes dans votre base de données et que vous voulez les passer à votre code Javascript? Vous pouvez créer un fichier XML
nommé YourPageJS.xml
et stocker le code Javascript identifié par certaines touches.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<entry key="showModal">
<![CDATA[
$(''#{0}'').modal(''show'',{1});
]]>
</entry>
</properties>
Vous appelez ce code par la méthode suivante qui se trouve dans une classe utilitaire, en passant vos paramètres:
public static String getJsByClass(Class clazz, String name, Object... params)
{
ResourceBundle resources = ResourceBundle.getBundle(clazz.getName()
+ "JS", Locale.getDefault(),
new XMLResourceBundleControl());
String mesaj = resources.getString(name);
mesaj = MessageFormat.format(mesaj, params);
return mesaj;
}
L'appel ressemble à ceci:
YourUtils.getJsByClass(YourPage.class, "showModal" ,"firstParameter","secondParameter");
où les paramètres pourrait être vos chaînes localisées.Dans le cas ci-dessus, le premier paramètre est l'ID de balisage.Vous pouvez l'ajouter à votre tête html comme ceci:
response.render(JavaScriptHeaderItem.forScript(YourUtils.getJsByClass(YourPage.class, "showModal" ,"firstParameter","secondParameter"), "yourJSid"));
(Wicket 6)
En outre, dans le XML
vous devez transformer deux caractères: '
devient ''
et {
devient '{'
pour des raisons d'analyse syntaxique.
J'ai trouvé une solution qui utilisait PackageResource, mais la vôtre est encore plus courte. Merci beaucoup. – nebenmir