下面的模板,通過拍攝圖像作爲一個字節數組,其編碼爲Base64編碼顯示PNG圖像:爲什麼玩模板期望Scala類
@(img: Array[Byte])
<img src="data:image/png;base64,@java.util.Base64.getEncoder.encodeToString(img)">
模板適用於使用Scala的做播放項目的主要語言:
(lazy val root = (project in file(".")).enablePlugins(PlayScala))
但是,如果一個項目使用Java作爲其主要的語言:
(lazy val root = (project in file(".")).enablePlugins(PlayJava))
[error] C:\Java\workspace\test\app\views\imgbase64.scala.html:2: type mismatch;
[error] found : Array[java.lang.Byte]
[error] required: Array[scala.Byte]
[error] <img src="data:image/png;base64,@java.util.Base64.getEncoder.encodeToString(img)">
[error] ^
[error] one error found
[error] (compile:compile) Compilation failed
這是斯卡拉2.11.4和播放2.3.6
爲什麼模板期望斯卡拉字節而不是Java字節在這裏,即使:運行時,該項目被認爲是以下錯誤Play項目被配置爲使用Java?
如果通過@(img:Array [java.lang.Byte])完全限定類型,會發生什麼? – 2014-11-05 16:32:56
不幸的是沒有任何變化 - 模板已經將參數類型視爲Array [java.lang.Byte],因此完全限定它並不能解決問題。 – Sevas 2014-11-05 16:52:25
我的意思是改變模板。你的意思是你得到編譯錯誤? – 2014-11-05 16:55:09