私も気になっていたのですが、viewが少なく回答が付くのか心配だったので、以前同じ事をしようとしたときに諦めた私の回答を載せておきます・・・。
私が調べた限り、th:withで一旦定義した値を書き換える術は見つからなかったので、その方法は無いと判断しました。
対応として以下の3つを考えましたが、代入前の値と再代入前の値両方参照して何かしたい場合はどうしても冗長な記述になってしまいますね・・・。
質問者様が値を再代入した上でどういった処理を行いたいのかまで書いていただければ再代入せずに実現する方法を見つけることもできるかもしれません。
こんな回答でごめんなさい。識者の方が現れるのを期待してます。
###1. 定義時に条件を判定してを定義する
html
1<th:block th:with="x=(${条件:true} ? ${100} : ${200})">
2 <p th:text="${x}"></p>
3</th:block>
withで代入する際に三項演算子を利用して代入する値を判断しています。
この場合条件がtrueであればxに100が、falseなら200が入ります。
###2. もう1つブロックを作ってそこで処理する
html
1<th:block th:with="x=${100}">
2 <th:block th:if="true" th:with="x=${200}">
3 <p id="1" th:text="${x}"></p>
4 </th:block>
5 <p id="2" th:text="${x}"></p>
6</th:block>
再代入が無理な前提で条件ごとに値と処理を定義します。
id="1"のpタグには200が表示されますが、再代入できてるわけではないのでid="2"のpタグには100が表示されます。
###3.Thymeleafに値を渡す際に値を二つ渡す
代入前の値と再代入後の値に当たるものを二つ用意してThymeleafに渡します。
元も子もないですが。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/01/12 09:24
2017/01/12 09:53
2017/01/12 13:00