我在 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/