Во-первых, на языке выражений ${
начинает выражение, а }
заканчивает его.Вам не нужно вкладывать их или что-то в этом роде, поэтому ${testData[${loopStatus.index}]}
является вашей синтаксической ошибкой, а .selected
находится вне вашего выражения, поэтому должно быть просто: ${testData[loopStatus.index].selected}
.
Теперь в forEach
, ваш атрибут var
определяет имя переменной, которая содержит текущий элемент.Поэтому вам редко нужно использовать varStatus
.Вы можете просто выполнить тест как ${test.selected}
.
Наконец, ваш атрибут checked
находится за пределами вашего элемента ввода флажка!
Итак:
<c:forEach items="${testData}" var="test">
<spring:bind path="${test.selected}">
<input type="hidden" name="_${status.expression}">
<input type="checkbox" name="${status.expression}" value="true" <c:if test="${status.value}">checked</c:if>>
</spring:bind>
</c:forEach>
(не уверен, что вам когда-нибудь понадобится скрытое поле, мы не используем его ни для одного из наших флажков).