如何在java中使用play framework 2 JsMessages插件的过滤功能?

How can I use in java the filtering function of the play framework 2 JsMessages plugin?

如何使用javaplay framework 2 JsMessages插件的过滤功能? 您可以在 julienrf/play-jsmessages

找到插件代码和文档

我已经阅读了 Scala 示例:

val messages = JsMessages.filtering(_.startsWith("error."))

我猜 java 版本应该是这样的:

final static jsmessages.JsMessages messages = JsMessages.filtering(play.Play.application(),/*a nice filter go there*/);

java 示例应该在对应于生成 jsMessage 对象的部分进行更新,但我猜不出如何传递正确的过滤器函数。这是 java 示例:java sample code.

这是我的代码的 jsMessages 部分。在评论中你得到了没有过滤的正确实现:

//final static jsmessages.JsMessages messages = JsMessages.create(play.Play.application());
final static jsmessages.JsMessages messages = JsMessages.filtering(play.Play.application(),---A play.libs.F.Function<String,Boolean>---);

public static Result jsMessages(String code) {
    return ok(messages.generate("Messages", Lang.forCode(code))).as("application/javascript");
}

所以我的问题是创建一个 play.libs 接口 F.Function。

这是在 jsMessages 插件中实现过滤的 java 代码:

final static F.Function<String, Boolean> filter = new F.Function<String, Boolean>() {
    @Override
    public Boolean apply(String key) {
        try {
            return key.startsWith("js.");
        } catch (Throwable throwable) {
            return false;
        }
    }
};
final static jsmessages.JsMessages messages = JsMessages.filtering( play.Play.application(),filter);

看到它的scala版本就哭了:

val messages = JsMessages.filtering(_.startsWith("error."))