ご存じのとおり、input
コンポーネントには、チェックボックスをデフォルトで有効にするかどうかを示す属性checked
があります。
<input type="checkbox" name="mycheckbox" checked="checked"/>
デフォルトでチェックボックスを無効にするには、checked
例外を宣言する必要があります。 Thymeleafのフラグによってchecked
属性を設定することは可能ですか?
公式のthymeleafの文書によると
http://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#fixed-value-boolean-attributes
th:checked
は、固定値のブール属性と見なされます。
<input type="checkbox" name="active" th:checked="${user.active}" />
どこuser.active
はboolean
でなければなりません。
したがって、あなたの場合、Andreaのようになります、
<input type="checkbox" name="mycheckbox" th:checked="${flag}" />
少し掘り下げた後、解決策を見つけました。がある th:checked
そのための属性。
これは動作します:
<input type="checkbox" name="mycheckbox" th:checked="${flag} ? 'checked'">
これは失敗します:
<input type="checkbox" name="mycheckbox" th:checked="${flag} ? 'checked' : ''">
checked=""
はinput
コンポーネントに設定され、チェック済みとしてマークされます。このメソッドはカスタム属性に有効ですth:attr
も。次の例を検討してください。
<p th:attr="customattr=${flag}?'attr'></p>
flag
がtrueの場合、次のものに置き換えられます。
<p customattr="attr"></p>
flag
がfalseの場合、次のものに置き換えられます。
<p></p>
次のように、thymeleafのラジオ入力にチェック属性を条件付きで追加できます。
<input type="radio" th:checked="${sales.sales_head.sales_type} == CREDIT" class="sales_type" value="CREDIT" name="sales_type" >
ここでsales_typeがCREDITの場合、ラジオがチェックされます。それ以外の場合は、未チェックのままになります。
どちらの提案された解決策も私にとってはうまくいきませんでした。
これはうまくいきました:
th:checked="${#strings.equals(param.myRequestParameterXYZ, 'foobar')}"
プロパティのtrueまたはfalseの値に基づいて、thymeleafにチェックボックス(チェックマークのオン/オフ)を表示する問題に直面しました。次の方法で解決しました。
コントローラーのメソッド
@RequestMapping(value = "/test")
public String showCheckbox(Model model) {
boolean myBooleanVariable = false;
model.addAttribute("myBooleanVariable", myBooleanVariable);
return "sample-checkbox";
}
HTMLページで:
<input type="checkbox" name="myBooleanVariable" th:checked="${myBooleanVariable}"/>