尝试对 java 脚本中的 java 变量使用 .get 方法
Attempting to use .get method on java variable in javascript
我正在尝试创建一个网页(使用播放框架)来显示用户的姓名、出生日期等。我被卡住的地方是试图在 [=22= 中显示未知大小的列表] 页。我目前有:
@(currentUser : Profile)
@main("Profile") {
<div>
<h1><b>@currentUser.getFirstName() @currentUser.getLastName()</b></h1>
<p>@currentUser.getDateofBirth</p>
<b>Nationalities</b>
<ul><p id="natInput"></p></ul>
<script>
for (var i = 0; i < "@currentUser.getNationalities().size()"; i++) {
document.getElementById("natInput").innerHTML += "<li>" + "@currentUser.getNationalities().get(i)" + "</li>";
}
</script>
</div>
}
Profile 是一个基本的 java class,它只包含 getter 和 setter,而 .getNationalities returns 是一个列表。
@Main 是另一个 html 文件,它存储网站的基本设计,与此无关。
如您所见,我正在尝试使用 .get 方法循环遍历用户的国籍列表,但不幸的是,无法识别 get 中使用的 "i" 变量,因为它是 html 中的 java 脚本变量。
此代码的每个其他部分似乎都按预期工作,并且当 "i" 被替换为整数(例如 0 或 1)时 .get 工作。
关于如何获取此列表的每个单独元素的任何想法?任何帮助将不胜感激
问题是您搞乱了页面生成的不同步骤。
首先,我们应该清除从 Play 控制器中的 render
命令到浏览器中完全呈现的页面的处理步骤。
Twirl 是一个模板引擎,可让您使用 Scala 生成 HTML 页面。
此步骤在服务器端执行,在 HTML 页面发送到浏览器之前。
在此步骤中,不考虑 Javascript 代码。
所以在 render
命令之后的第一步,选择并渲染旋转模板,评估每个 Twirl/Scala 指令。这将生成一个没有更多 Scala 代码的 HTML 文件。
这个生成的页面被发送到浏览器。然后页面被加载到浏览器中,Javascript 代码被评估为任何其他带有 JS 的 HTML 页面。
这可以解释为什么您无法按照您现在的方式呈现页面。
如果您的页面是静态的,一种正确的方法是仅使用旋转指令来遍历数组 Twirl Template - Iterating
如果 getNationalities()
方法 returns a Scala List
,您应该能够像下面这样重写列表生成
<ul>
@for(nationality <- currentUser.getNationalities()) {
<li>@nationality</li>
}
</ul>
我正在尝试创建一个网页(使用播放框架)来显示用户的姓名、出生日期等。我被卡住的地方是试图在 [=22= 中显示未知大小的列表] 页。我目前有:
@(currentUser : Profile)
@main("Profile") {
<div>
<h1><b>@currentUser.getFirstName() @currentUser.getLastName()</b></h1>
<p>@currentUser.getDateofBirth</p>
<b>Nationalities</b>
<ul><p id="natInput"></p></ul>
<script>
for (var i = 0; i < "@currentUser.getNationalities().size()"; i++) {
document.getElementById("natInput").innerHTML += "<li>" + "@currentUser.getNationalities().get(i)" + "</li>";
}
</script>
</div>
}
Profile 是一个基本的 java class,它只包含 getter 和 setter,而 .getNationalities returns 是一个列表。 @Main 是另一个 html 文件,它存储网站的基本设计,与此无关。
如您所见,我正在尝试使用 .get 方法循环遍历用户的国籍列表,但不幸的是,无法识别 get 中使用的 "i" 变量,因为它是 html 中的 java 脚本变量。 此代码的每个其他部分似乎都按预期工作,并且当 "i" 被替换为整数(例如 0 或 1)时 .get 工作。
关于如何获取此列表的每个单独元素的任何想法?任何帮助将不胜感激
问题是您搞乱了页面生成的不同步骤。
首先,我们应该清除从 Play 控制器中的 render
命令到浏览器中完全呈现的页面的处理步骤。
Twirl 是一个模板引擎,可让您使用 Scala 生成 HTML 页面。 此步骤在服务器端执行,在 HTML 页面发送到浏览器之前。 在此步骤中,不考虑 Javascript 代码。
所以在 render
命令之后的第一步,选择并渲染旋转模板,评估每个 Twirl/Scala 指令。这将生成一个没有更多 Scala 代码的 HTML 文件。
这个生成的页面被发送到浏览器。然后页面被加载到浏览器中,Javascript 代码被评估为任何其他带有 JS 的 HTML 页面。
这可以解释为什么您无法按照您现在的方式呈现页面。
如果您的页面是静态的,一种正确的方法是仅使用旋转指令来遍历数组 Twirl Template - Iterating
如果 getNationalities()
方法 returns a Scala List
<ul>
@for(nationality <- currentUser.getNationalities()) {
<li>@nationality</li>
}
</ul>