2014-03-09 3 views
5

Я запускаю Play Framework 2.2.1. Раньше у меня были только шаблоны рендеринга java-контроллеров. Теперь я добавляю контроллер Scala для создания нового шаблона indexScala.scala.html. Список параметров для indexScala.scala.html:Play 2.2.1: неоднозначные неявные значения для объекта PlayMagicForJava

@()(implicit request: play.api.mvc.RequestHeader) 

и называет

@mainEmptyScala("blah", head) {} 

Список параметров для mainEmptyScala.scala.html:

@(title: String, head: Html = Html(""))(body: Html)(implicit request: play.api.mvc.RequestHeader) 

Когда я звоню шаблон indexScala , Я также объявляю запрос как неявный в контроллере Scala. Однако, я получил эту ошибку компиляции.

[error] ~/myapp/app/views/indexScala.scala.html:29: ambiguous implicit values: 
[error] both method requestHeader in object PlayMagicForJava of type => play.api.mvc.RequestHeader 
[error] and value request of type play.api.mvc.RequestHeader 
[error] match expected type play.api.mvc.RequestHeader 
[error] @mainEmptyScala("blah", head) { 
[error]        ^

Я убедился, что indexScala и mainEmptyScala шаблоны не вызывается любым контроллером Java, поэтому PlayMagicForJava не следует использовать. Кто-нибудь знает, как решить эту ошибку компиляции? Благодарю.

+0

ли вы решить эту проблему? У меня такая же ситуация в моем проекте. – endrigoantonini

+0

Нет, я использую обходное решение. Я передаю RequestHeader явно. – coolsuntraveler

ответ

0

В контроллере, я предполагаю, что у вас есть что-то вроде этого:

def myAction() = Action { implicit request => 
    Ok(someView()) 
} 

Так по умолчанию, если вы не указать неявное на ваш взгляд paramters т.е.

Изменение

@()(implicit request: play.api.mvc.RequestHeader) 

К

@() 

Вы все равно должны иметь доступ к RequestHeader в своем представлении явно. И тогда вы тогда должны были бы назвать:

@mainEmptyScala("blah", head) {}(request) 

Я не проверял, но я это должно работать

1

После того, как та же проблема, я наткнулся на решение. Решение, которое работает для меня, что я на Play Framework 2.3.x с Scala 2.11.1.

Просто используйте play.api.mvc.Request везде в шаблонах:

@()(implicit request: play.api.mvc.Request[Any]) 
Смежные вопросы