Rzeczywiste rozwiązanie działa, jeśli struny są już w JavaScripcie files.But co się dzieje, gdy zlokalizowane ciągi w bazie danych i chcą przekazać je do Twój kod JavaScript? Można utworzyć plik XML
o nazwie YourPageJS.xml
i zapisać kod JavaScript zidentyfikowany przez niektóre klucze.
<?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>
wywołać ten kod poprzez następujące metody, która znajduje się w klasie użytkowej, przekazując swoje parametry:
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;
}
Połączenie wygląda następująco:
YourUtils.getJsByClass(YourPage.class, "showModal" ,"firstParameter","secondParameter");
gdzie parametry może być twoimi zlokalizowanymi ciągami. W powyższym przykładzie pierwszym parametrem jest identyfikator znacznika. Możesz go dodać do nagłówka html tak:
response.render(JavaScriptHeaderItem.forScript(YourUtils.getJsByClass(YourPage.class, "showModal" ,"firstParameter","secondParameter"), "yourJSid"));
(Furtka 6)
Również w XML
należy przekształcić dwa znaki: '
staje ''
i {
staje '{'
analizowania przyczyn.
Wymyśliłem rozwiązanie, które używało PackageResource, ale Twoje jest jeszcze krótsze. Wielkie dzięki. – nebenmir