playframework에서 main.scala.html에 전달하는 매개 변수를 추가하는 방법

알고 있는 사람에게는 상식일지도 모르지만 모르고 꽤 빠진 playframework 2.4 로 main.scala.html 에 건네주는 파라미터를 늘리는 방법. 더 똑똑한 방법을 아는 사람이 있으면 보충하십시오.

기본값을 지정하여 호출 호환성을 유지하십시오!



main.scala.html 은 <html> ~ </html> 를 이미 기술해 사이트 전체에서 공통화된 레이아웃을 구현하는 목적으로 사용됩니다. 요점은 여기서 헤더나 꼬리말, 좌우의 컬럼등이 배치하는 것입니다만, 상황에 따라서 그 일부를 변경하고 싶은 것이 종종 있습니다. 예를 들면 「로그인중이면 오른쪽 상단에 로그아웃 버튼을 낸다」등이군요.

이 경우, 단순히 main.scala.html 의 파라미터를 늘리는 것만으로는 에러가 되어 버립니다.

main.scala.html
@(title: String, uid:Option[String])(content: Html)


@main() 에 새로 추가 된 UID를 전달했음에도 불구하고 :

not enough arguments for method apply: (title: String, uid: Option[String])(content: play.twirl.api.Html)play.twirl.api.HtmlFormat.Appendable in class main. Unspecified value parameter uid.

그리고 출력됩니다. 에러의 지적 장소도 선언 부분으로 보이네요.

이것은 다음과 같이 추가분의 파라미터에 디폴트치를 정의하는 것으로 회피할 수가 있습니다.

main.scala.html
@(title: String, uid:Option[String] = None)(content: Html)

이 거동으로부터의 추측이 됩니다만, playframework 는 에러 페이지의 표시등의 목적으로 내부적으로 main.scala.html 를 참조하고 있기 때문에, 파라미터 추가의 변경을 견딜 수 없는 것이 원인일까 생각합니다. 그래서 기본값을 지정하여 호출 호환성을 유지해야 하지요.

그러나 이 손의 TIP 는 문서의 어디에 써 있을까…

좋은 웹페이지 즐겨찾기