繁体   English   中英

如何在Play2 Scala模板中设置所选选项?

[英]How can I set selected option in Play2 scala template?

我有看起来像的文件form.scala.html

@(ac: models.entities.Account)
. . .
<form id="accountForm" action="@routes.Accounts.save(ac.getId())" method="POST">
<table>
    <tbody>
    . . .
    <tr>
    <td>Role</td>
    <td>
    <select name="role" id="role">
        @for((value, text) <- models.entities.Account.getRoles()) {
        <option @if(value == ac.role){"selected"} value="@value"> @text </option>
        }
    </select>
    </td>
    </tr>
    . . .
    </tbody>
</table>
<p align="center">
    <input type="submit" value="Save">
    <a class="button" href="@routes.Accounts.index()">Cancel</a>
</p>
</form>

我想要像这样输出HTML

. . .
<td>Role</td>
<td>
    <select name="role" id="role">
        <option  value="1"> Admin </option>
        <option selected value="2"> User </option>
    </select>
</td>
. . .

但是没有出现selected 布局有什么问题? 也许我很累,但我听不懂。 感谢您浪费时间。

有时模板引擎尝试转义字符串数据可能会有些怪异,而在尝试使用模板变量编写整个属性而不是模板化它们的值时,我遇到了这种情况。 您应该能够通过在Html构造函数中包装"selected"以使Twirl从字面上对待它来解决此问题。 所以:

<option @if(value == ac.role){Html("selected")} value="@value"> @text </option>

您还应该在Twirl项目中打开一个问题,因为我个人认为您应该按原样工作。

哦! 我发现了错误! 我认为有两个原因:

  1. 不同的数据类型(字符串和整数)
  2. 使用==代替string.contentEquals(otherString)

工作代码是

<select name="role" id="role">
@for((value, text) <- ac.getRoles()) {
  <option @if(value.contentEquals(ac.role + "")){selected} value="@value"> @text </option>
}  
</select>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM