Java 如何为公共消息属性提供服务,仍然从web项目内部访问它们?

Java 如何为公共消息属性提供服务,仍然从web项目内部访问它们?,java,javascript,android,properties,playframework,Java,Javascript,Android,Properties,Playframework,背景 我们有几个客户端,一些是iPad和Android的原生客户端,另一些是html客户端,比如web和SmartTv 我们有一个集中的web项目,为所有这些客户机提供典型的资产,如图标、favicon、字体等。通过这种方式,我们可以在一个地方维护资产 问题 现在,我希望将消息属性文件(在war文件中不是公共的)提供给JavaScript和本机客户端 有没有什么好的建议,如何以适合不同客户端的适当格式公开提供这些消息?如果我理解正确,您希望使用#{i18n/}标记,如图所示。它将为您提供一个ja

背景

我们有几个客户端,一些是iPad和Android的原生客户端,另一些是html客户端,比如web和SmartTv

我们有一个集中的web项目,为所有这些客户机提供典型的资产,如图标、favicon、字体等。通过这种方式,我们可以在一个地方维护资产

问题

现在,我希望将消息属性文件(在war文件中不是公共的)提供给JavaScript和本机客户端


有没有什么好的建议,如何以适合不同客户端的适当格式公开提供这些消息?

如果我理解正确,您希望使用#{i18n/}标记,如图所示。它将为您提供一个javascript方法,提供消息文件中定义的键的I18N翻译。

如果我理解正确,您希望使用#{I18N/}标记,如图所示。它将为您提供一个javascript方法,提供消息文件中定义的键的I18N翻译。

一个解决方案!将消息作为json提供给公众:

public class AssetsController extends Controller{

    public static void getMessages(){
        String locale = params.get("locale");
        if(locale == null){
            locale = Lang.get();
        }
        System.out.println(locale);
        Properties messages = Messages.all(locale);
        renderJSON(messages);
    }
}

一个解决方案正在发挥作用!将消息作为json提供给公众:

public class AssetsController extends Controller{

    public static void getMessages(){
        String locale = params.get("locale");
        if(locale == null){
            locale = Lang.get();
        }
        System.out.println(locale);
        Properties messages = Messages.all(locale);
        renderJSON(messages);
    }
}

美好的至少这对JavaScript客户端有很大帮助。我可能会将消息序列化为本地客户端的JSON。很好!至少这对JavaScript客户端有很大帮助。我可能将消息序列化为本地客户端的JSON。