'getActionAnnotation' не найден в расширенном контроллере черты - PullRequest
2 голосов
/ 21 июня 2011

При использовании модуля play-scala я пишу черту Secure следующим образом:

trait Secure extends Controller {

  self:Controller =>

  @Before
  def checkAccess = {
    if (!session.contains("username")) {
      flash.put("url", if (request.method == "GET") request.url else "/")
      Action(Authentication.login)
    }
    var check = getActionAnnotation(classOf[Check])
    if (check != null) {
      check(check)
    }
    check = getControllerInheritedAnnotation(classOf[Check])
    if (check != null) {
      check(check)
    }
  }

  private def check(check: Check) {
    for (role <- check.value()) {
      if (!check(role)) {
        Forbidden
      }
    }
  }

}

Но я получаю следующую ошибку компиляции:

Файл /app/controllers/Secure.scala не может быть скомпилирован. Возникла ошибка: не найдено: значение getActionAnnotation

Как я могу это исправить?

1 Ответ

0 голосов
/ 30 июня 2011

getActionAnnotation () определяется в родительском классе Java Controller, а не в версии Scala (которая находится в ScalaController, но переименовывается в исходный код модуля Scala, см. Src / play / mvc / package.scala в модуле scala).

Боюсь, что вам нужно либо разложить и исправить модуль Scala, либо получить исходный код из источника Java (framework / src / play / mvc / Controller.java).

...