【发布时间】:2016-03-28 16:56:27
【问题描述】:
来自首页的playframework教程, https://www.playframework.com/ 培训师通过一个简单的示例引导您,最终导入一个 javascript (coffeescript) 文件以动态生成列表。
他在 index.scala.html 模板文件中写了这个,所以:
<script type='text/javascript' src='@routes.Assets.at("js/index.js")'></script>
注意,src 属性是单引号的,封装的 at 方法使用双引号作为其单个字符串参数。
这与我预期的不太一样,因为我知道 @routes.Assets.at 方法将被结果值替换,而且我记得它在许多编程语言(例如 Perl)中很典型单引号指定一个固定/静态字符串值。但是好的,我想我们正在查看 HTML 脚本标记的属性的开头,这没关系。
Perl:
my $name = "Fred";
print "Hello $name\n"; // prints Hello Fred (with an endline afterwards)
print 'Hello $name\n'; // prints Hello $name\n
https://en.wikibooks.org/wiki/Perl_Programming/Strings
不过,我个人并不喜欢它。而我更喜欢使用相反的:
<script type="text/javascript" src="@routes.Assets.at('javascripts/index.js')"></script>
然而,play 根本不喜欢这样,产生的错误信息是:
"Multiple annotations found at this line:
- unclosed character literal
- ')' expected but something
found."
这是最出乎意料的,因为它在 HTML 中是允许的, http://www.w3.org/TR/html4/intro/sgmltut.html#h-3.2.2
并且在 Java 中也是允许的。例如:
String test = "this is 'not' a test";
那么,问题是:这背后的逻辑是什么? 我可以在某处找到记录在案的“规则”吗? 它是播放特定的,还是因为它是某种与 Scala 相关的文件(index.scala.html),这是由于 Scala 语法的怪癖? (我刚开始看 Scala)
【问题讨论】:
标签: java html scala playframework playframework-2.0