передача карты, содержащей пользовательский объект в качестве значения, для воспроизведения шаблона framework2 scala

#scala #playframework #playframework-2.0

#scala #playframework #playframework-2.0

Вопрос:

Я использую play framework версии 2.2 и пытаюсь передать карту в шаблон scala. Карта имеет строку в качестве ключа и пользовательский объект в качестве значения. Мой контроллер находится на Java — шаблон находится в Scala.

Контроллер:

  Map<String, UDObject> myMap = new HashMap<String, UDObject>();
 UDObject ud1 = new UDObject(a,b,c);  
 myMap.put("abcd", ud1);
 return ok(index.render(myMap));
  

Index.scala.html Шаблон:

 @(myMap: Map[String, UDObject])  
  

Когда я пытаюсь перезагрузить / eclipse или использовать play run / start, я получаю сообщение об ошибке компиляции, в котором сообщается, что шаблон не смог найти пользовательский объект UDObject. Есть идеи, что я делаю не так?

Ответ №1:

Вам необходимо использовать полное имя в объявлении параметров в шаблоне воспроизведения, например:

 @(myMap: Map[String, com.example.UDObject])  
  

К сожалению, это невозможно import , поэтому все, чего нет в пространстве имен model, view или Scala, должно использовать полное имя.

Ответ №2:

Также можно добавить этот импорт для всех ваших шаблонов.

templatesImport = Seq("com.example.UDObject")

Теперь вам не нужно использовать полное имя вашего класса.

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

1. попытался добавить его — также увидел заметку на сайте play framework, но по какой-то причине у меня это не работает (я перезагрузил / запустил eclipse и также запустил clean)