java - ( Play 2.1.3) @select 返回(String, String) 对

标签 java scala playframework playframework-2.0

我在 2.1.3 游戏中遇到了 @select helper 的困扰。

我想对用户列表进行简单的选择。选择应将值设置为用户的 ID,选项应具有用户的名称。 我使用的是 MongoDB 模块,所以它们都是字符串。 这是我所拥有的:

@select(createForm("userId"),
    options = User.options(),
    'class -> "form-control",
    '_default -> "--- Select ---",
        '_label -> "User assigned",
        '_showConstraints -> false
)

用户模型中的选项():

public static Seq<java.util.Map.Entry<String,String>> options() {

    Seq<java.util.Map.Entry<String, String>> map = new Seq<java.util.Map.Entry<String,String>>();

    for (User user : User.coll.find().toArray()) {

        //seq.add(new AbstractMap.SimpleEntry<String, String>(user.id, user.name));
    }

    return map;
}

错误是:

type mismatch; found : Seq[java.util.Map.Entry[String,String]] required: Seq[(String, String)]

如何定义一对这样的字符串? (String, String),或者有没有更简单的方法来做到这一点而不需要循环?

谢谢

最佳答案

据我所知,(String, String)在Java中是scala.Tuple2<String, String> ,所以你的 Seq 应该看起来像 Seq<Tuple2<String, String>>

您可以使用 play.libs.Scala用于执行 Java 和 Scala 类型之间转换的帮助器:

List<Tuple2<String, String>> values = new ArrayList<>();
for (User user : User.coll.find().toArray()) {
    values.add(Scala.Tuple("asd", "zxc"));
}
return Scala.toSeq(values);

关于java - ( Play 2.1.3) @select 返回(String, String) 对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18950911/

相关文章:

java - 如何显示打印对话框

java - 更改字符串 xml hiperlink 的颜色而不覆盖样式

java - 从某个日期到当前日期的日期列表

java - 使用 XMLOutputFactory 时是否可以指定 EOL 的行为?

java - 如何使用 Java 或 AWSKmsClient 使用 AWS 加密开发工具包解密 AWS KMS 密码

java - play框架2.1中如何安排每周一1点作业?

java - 为什么增强的 for 循环在以分号结束时不会失败?

Java ConcurrentHashMap.computeIfPresent 值修改可见性

Java play框架 对同一对象的异步操作

java - 将文件实例传递给 Playframework 中的另一个方法时出现 NullPointerException