2

我正在尝试将键值映射呈现到模板,然后以这种方式显示:

@(twittsIfollow: Map[String, String])
 .....
 @if(twittsIfollow != null) {
  @for((key, value) <- twittsIfollow) {
    @key
    @value
   } 
 }

它说,这是错误的。映射键值是否有 scala 标签?

这是我的方法:

public static Map<String, String> alltwitts(List<Long> otherIDs) {
    Map<String, String> results=new HashMap<String, String>();
    for (Long id: otherIDs) {
        Query selected_twitt = JPA.em().createQuery("select u.twitt from Twitt u where " + " u.whose = ?").setParameter(1, id);
        String twOwner = User.getOneUser(id);
        String twitt  = (String) selected_twitt.getSingleResult();
        results.put(twOwner, twitt);
    }

    return results;
}

然后我在这个地方渲染到模板:

Map<String, String> twittsIfollow = Twitt.alltwitts(IDusersIamFollowing);
return ok(microblog.render(twittsIfollow));

现在它说:[NonUniqueResultException: result returns more than one elements]

谢谢

4

3 回答 3

9

简单地

@for((key, value) <- twittsIfollow) {
  @key
  @value
}

顺便说一句,如果您使用的是 Scala,twittsIfollow则永远不应为空。更喜欢使用Option.

于 2012-07-05T15:09:35.563 回答
3

我是如何解决的:

    public static Map<String, List<String>> alltwitts(List<Long> otherIDs) { 
    Map<String, List<String>> results=new HashMap<String, List<String>>();
    for (Long id: otherIDs) {                       
        Query selected_twitt = JPA.em().createQuery("select twitt from Twitt where " + " whose = ? order by id").setParameter(1, id);
        String twOwner = User.getOneUser(id);
        List<String> twitt  = selected_twitt.getResultList();
        results.put(twOwner, twitt);

    }
    System.out.println(results);
    return results;
}

然后在我的应用程序中:

Map<String, List<String>> twittsIfollow = Twitt.alltwitts(IDusersIamFollowing);
return ok(microblog.render(twittsIfollow));

然后在我的模板中:

@(twittsIfollow: Map[String, List[String]])

@if(twittsIfollow != null) {
  @for((key, value) <- twittsIfollow) {
  @for(innervalue <- value){
            Username: @key
            Twitt: @innervalue
        } 
      } 
 }

只适合那些像我一样愚蠢的人:D并寻找这样的解决方案..

谢谢你的帮助,伙计们..

于 2012-07-05T20:08:56.280 回答
1

@doniyor,我很惊讶,因为不久前我向您展示了其他问题的方式。

顺便说一句,我认为构建、传递和迭代twittsIfollowa Listof Maps会更好

那么你可以使用

@if(twittsIfollow != null) {
  @for(twitts <- twittsIfollow) {
   the value is:  @twitts.get("key")
  } 
}
于 2012-07-05T13:17:34.063 回答