1

次のようなファイル 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、表示されません。レイアウトの何が問題になっていますか?疲れているのかもしれませんが、理解できません。時間を無駄にしていただきありがとうございます。

4

2 に答える 2

1

テンプレート エンジンが文字列データをエスケープしようとすると、奇妙なことが起こることがあります。値をテンプレート化するのではなく、テンプレート変数を使用して属性全体を書き込もうとしたときに、これに遭遇しました。"selected"コンストラクターでラップして、HtmlTwirl が文字どおりに処理するようにすることで、これを回避できるはずです。そう:

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

また、Twirl プロジェクトで問題を開く必要があります。個人的には、あなたが持っていた方法がそのまま機能するはずだと思うからです。

于 2014-08-07T13:05:09.807 に答える
0

おー!間違い発見!それには、次の 2 つの理由があると思います。

  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>
于 2014-08-07T13:08:48.820 に答える