wicket自动选择正确的js文件,就像属性文件一样。
任何人都知道该怎么做?
答案 0 :(得分:8)
将语言环境传递给资源引用:
class MyPage extends WebPage implements IHeaderContributor {
public void renderHead(IHeaderResponse response) {
response.renderJavascriptReference(new ResourceReference(
MyPage.class, "my.js", getLocale(), getStyle()));
}
}
答案 1 :(得分:0)
如果字符串已经存在于Javascript文件中,则实际解决方案有效。但是当您在数据库中使用本地化字符串并希望将它们传递给您的Javascript代码时会发生什么?您可以创建一个名为XML
的{{1}}文件,并存储由某些密钥标识的Javascript代码。
YourPageJS.xml
您可以通过以下方法调用此代码,该方法位于实用程序类中,并传递参数:
<?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>
电话看起来像这样:
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;
}
其中参数可以是你的本地化字符串。在上面的例子中,第一个参数是标记ID。你可以像这样将它添加到你的html头:
YourUtils.getJsByClass(YourPage.class, "showModal" ,"firstParameter","secondParameter");
(Wicket 6)
此外,在response.render(JavaScriptHeaderItem.forScript(YourUtils.getJsByClass(YourPage.class, "showModal" ,"firstParameter","secondParameter"), "yourJSid"));
中,您必须转换两个字符:XML
变为'
而''
变为{
以解析原因。