Карта [Int, String] в шаблоне платформы Play
Я использую платформу Play 2.0.4 и могу успешно создать шаблон, который принимает Map[String, String]
шаблон, поместив это в часть контроллера:
Map<String, String> test = new HashMap<String, String>();
return ok(views.html.template.render(test));
И в template.scala.html
:
@(map : Map[String, String])
Однако, если я изменю первый String
для Int
(Целое число в части контроллера), я получаю это исключение:
error: method render in class template cannot be applied to given types;
Можно ли определить Integer -> String mapping в инфраструктуре Play и, если да, как я могу этого достичь?
Редактировать:
Исключение происходит, когда я изменяю код в контроллере на:
Map<Integer, String> test = new HashMap<Integer, String>();
И в шаблоне:
@(map: Map[Int, String])
2 ответа
В своем шаблоне вы указываете, что ваш Map
ключи scala.Int
с, но вы даете это Map
с java.lang.Integer
как ключи.
Решение состоит в том, чтобы изменить строку в вашем шаблоне на
@(map: Map[Integer, String])
С вашим кодом, сгенерированным render
метод принимает Map<Object, String>
, Затем вы можете предоставить такую карту.
Существуют помощники автоматического преобразования из Java в Scala (и из Scala в Java). Я не знаю, можно ли подать заявку, если этот случай позволит вам иметь Map<Integer, String>
в render
метод.