Scala模板中未捕获的ReferenceError

时间:2018-03-09 13:48:37

标签: javascript playframework

我正在尝试在javascript中访问Scala值,但它给了我错误。

Scala模板 - login.scala.html: -

@import com.tempapp.Constants.Languages

<html>
   ...
</html>

<script>
var langs = @Languages.values; // Error
   ...
</script>

Languages是一个枚举: -

public enum Languages{
   ENGLISH, VIETNAMESE;
}
  

错误: - 未捕获的ReferenceError:未定义ENGLISHVIETNAMESE       在HTMLDocument。 (商家:282)       在j(jquery-2.1.4.min.js:2)       at Object.fireWith [as resolveWith](jquery-2.1.4.min.js:2)       在Function.ready(jquery-2.1.4.min.js:2)       在HTMLDocument.I(jquery-2.1.4.min.js:2)

1 个答案:

答案 0 :(得分:1)

您不能将enum的值转储到Javascript变量中。

您需要将enum转换为以逗号分隔的字符串,然后将其括在[]内:

var langs = [@Arrays.toString(Languages.values()).replaceAll("^.|.$", "").replaceAll("(?<=[\n, ]?)([^\n, ]+)(?=[\n, ]?)","'$1'")];

对于包含@Prefix的版本,您只需将Scala变量括在引号内:

var prefix = '@Prefix';