Перебирать список объектов и отображать его в lift

#scala #lift

#scala #поднимать

Вопрос:

Как вы просматриваете объект и отображаете результаты, не имея разметки в вашем коде scala?

У меня есть следующий код:

 class User(id: Long, name: String)

class DisplayIt {
  def display = {
    val users = List(new User(0,"John"), new User(1, "James"))
    "#name *" #> users.map(_.name) amp;
    "#id *" #> users.map(_.id.toString)
  }
}


//In the html:
<div class="lift:DisplayIt.display">
  <div class="one-user">
    User <span id="name"> has the id <span id="id">
  </div>
</div>
  

Что происходит сейчас, так это то, что я заканчиваю словами «Пользователь John James имеет идентификатор 0 1″, все в одном div class =»one-user».

Как мне зациклить его, чтобы у меня был один div class =»one-user» для каждого пользователя?

Я знаю, что могу написать html / xml в коде scala и сделать это таким образом, но есть ли простой способ сделать это без какого-либо xml в коде scala?

Комментарии:

1. Комментарий не по теме, если вы измените свой класс User, запустите класс case, вы можете избежать появления нового в вашем списке

Ответ №1:

Попробуйте

 def display = {
  val users = List(new User(0, "John"), new User(1, "James"))
  ".one-user *" #> users.map { u =>
    "#name *" #> u.name amp;
    "#id *" #> u.id.toString
  }
}
  

В принципе, сначала вы должны сопоставить окружающий элемент и применить к нему список преобразований.

Комментарии:

1. Я попробовал это, теперь, кажется, я получаю повторение одного пользователя (что я и хотел), но в каждом из них повторяются сведения обо всех пользователях. Итак, у меня есть два «Пользователя John James с идентификатором 0 1». Нужно ли мне делать что-то другое с моим html?

2. Обновление: Неважно, это работает отлично. Проблема заключалась в том, что я обернул свой исходный код users.map и не изменил его на u.name У меня все еще были users.map(_.name)

Ответ №2:

Попробуйте

 def list = { ".one-user *" #> users.map( n => { 
  "#name *" #> n.name) amp; 
  "#id *" #> n.id.toString) 
  }
) }
  

Комментарии:

1. Ах, не видел ответа Дебильски, когда я печатал свой