web-dev-qa-db-ja.com

th:Thymeleafで選択/オプションで番号を選択しても機能しない

私はこのコードを持っています

<div th:class="form-group">
    <td><label class="control-label leftMargin10 rightMargin10" scope="col" th:text="#{insertHours.hhFrom}">Attivita'</label></td>
    <td><select class="form-control" th:field="*{hhFrom}">
        <option th:each="i : ${#numbers.sequence(0, 23)}" th:value="${i}" th:text="${i}" th:selected="${ i==9 } ">Options</option>
    </select>
    </td>
</div>

Th:selectedに条件を追加しようとすると、機能しません。

私もこのコードに置き換えました:

th:attr="${i==9}? selected=selected: '' "

しかし、結果は同じです。

HTML

<select class="form-control" id="hhFrom" name="hhFrom">
    <option value="0" selected="selected">0</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8">8</option>
    <option value="9">9</option>
    <option value="10">10</option>
    <option value="11">11</option>
    <option value="12">12</option>
    <option value="13">13</option>
    <option value="14">14</option>
    <option value="15">15</option>
    <option value="16">16</option>
    <option value="17">17</option>
    <option value="18">18</option>
    <option value="19">19</option>
    <option value="20">20</option>
    <option value="21">21</option>
    <option value="22">22</option>
    <option value="23">23</option>
</select> 

回答に事前に感謝します

14
Tudor

th:fieldとともにth:selectedを使用することはできません。 th:fieldname=someMeaningfullNameに置き換えると、コードは正常に機能します。

詳細については、Thymeleafフォーラムの this threadをご覧ください。

14
geoand

また、<div>タグはオプションフィールドを囲み、selected = "selected"も機能します。例えば

<select th:field="*{name}">
    <div>
        <option disabled="true" selected="selected" value="">Select</option>
        <option value="1">first</option>
        <option value="2">second</option>
    </div>
</select>
4

もう1つのハックは、非常に単純でworksです。選択タグを閉じることです:<select ... />

最初の行の最後にある/>に注意してください。

<select th:field="*{percentage}" />
    <option th:each="i : ${#numbers.sequence(0, 100)}" th:value="${i}" th:text="${i}" th:selected="${i==75}"></option>
</select>

レンダリング:

<select id="percentage" name="percentage" />
    <option value="0">0</option>
    <option value="1">1</option>
    ...
    <option value="74">74</option>
    <option value="75" selected="selected">75</option>
    <option value="76">76</option>
    ...
    <option value="100">100</option>
</select>

WebブラウザとThymeleafの両方がこの罰金を処理します。

Thymeleaf v .3.0.9.RELEASEを使用しました

1
iaforek