【Thymeleaf】引数なし fragment の呼び出し元で、パラムを渡してもエラーにならないのはなぜ?
概要
Tyhmeleaf の fragment の引数について、「デフォルト値」を設定することはできないため、th:with
を利用して疑似デフォルト値を実装しました。
実装例
呼び出し元:
<div th:replace="this::item(name=${name})"></div>
Fragment側:
<th:block th:fragment="item()" th:with="name=${name} ?: 'default_name'">
<span>[[${name}]]</span>
</th:block>
気になる点
呼び出し先の fragment には引数を定義してませんが、呼び出し元から name
を渡しています。
一見、パラム不一致のエラーなりそうですが、実際には動作しています。
質問
- Fragment側で引数を受け取る定義がないのに、呼び出し元でパラメータを渡してもエラーにならないのはなぜ?
- この書き方はベストプラクティスと言えるのか?
補足
ChatGPT で調べたところ、
「動作する可能性はあるが、不安定な実装である」との回答
th:with
で変数が未定義の状態で参照されるとエラーになる可能性がある、といった指摘
もし、同じような実装をされた方や、この点について詳しい方がいれば、ご意見をいただけると嬉しいです。