У меня есть HashMap (hshFields) HashMaps (ecd_date, own_by и т. Д.) С ключами (метка, размер и т. Д.), К которым я обращаюсь так:
<c:out value="${hshFields.ecd_date.label}" />
<c:out value="${hshFields.owned_by.label}" />
<c:out value="${hshFields.fnd_source.label}" />
(примечание: ядолжен использовать JSTL, а не EL)
о выкладывает "метку" поля (поддерживается в карте XML), то есть:
commitment_id = Commitment Id
owned_by = Commitement Owner
fndsource = Funding Source
Я хотел бы сейчас использоватьJSTL forToken, чтобы зациклить вложенный HashMap. Но я не могу заставить его работать. Вот одна из моих попыток:
<c:forTokens items="commitment_id, owned_by, fndsource" delims="," var="curField">
The Field Label is: <c:out value="${hshFields.${curField}.label}" /> <br />
The Field Sixze is: <c:out value="${hshFields.${curField}.size}" /> <br />
</c:forTokens>
Это не работает из-за неправильного синтаксиса или, надеюсь, не потому, что я не 'у меня есть возможность EL?
РЕДАКТИРОВАТЬ ОК, основываясь на ответе Скаффмана ниже, у меня есть:
<c:forTokens items="owned_by, ecd_date, commitment_id" delims="," var="curField">
Label for <c:out value="${curField}" /> : <c:out value="${hshFields[curField].label}" /><br></br>
</c:forTokens>
и вывод:
Label for owned_by : Commitment Owner
Label for ecd_date :
Label for commitment_id :
Кажется, он работает только с первым токеном, потому что, если я использую следующее:
Label for owned_by : <c:out value="${hshFields.owned_by.label}" /> <br></br>
Label for ecd_date : <c:out value="${hshFields.ecd_date.label}" /> <br></br>
Label for commitment_id : <c:out value="${hshFields.commitment_id.label}" /> <br></br>
, я получаю этот вывод:
Label for owned_by : Commitment Owner
Label for ecd_date : Estimated Completion Date
Label for commitment_id : Commitment Number