#java #jsp #struts2 #ognl
#java #jsp #struts2 #ognl
Вопрос:
Мне нужно показать ряд флажков, и если условие выполнено, мне нужно их проверить. Ниже приведен мой код. У меня есть regions, которые представляют собой hashmap, и SelectedRegions, которые представляют собой список массивов. Я перебираю свою карту регионов и отображаю флажки с текстом рядом с ним в качестве значения с моей карты регионов. Теперь, во время итерации, если значение regions map доступно в списке массивов, мне нужно установить флажок. остальное не проверено. Я попробовал, как показано ниже. Но он не работает.
<s:iterator value="regions">
<li>
<div class="listClass">
<s:if test="#regions.value==selectedRegions.value">
<input type="checkbox" id='myTheater' checked="checked" name="theaterCheckBox" class="theaterCheckBox" />
<s:property value="value" />
</s:if>
<s:else>
<input type="checkbox" id='myTheater' name="theaterCheckBox" class="theaterCheckBox" />
<s:property value="value" />
</s:else>
</div>
<div class="checkboxDiv">
<input type="checkbox" id="allFeatured" class="featuredCheckBox" />
</div>
</li>
</s:iterator>
Каким-то образом условие if, которое я использую, не работает. Не могли
бы вы сообщить мне, как этого добиться?
Комментарии:
1. По какой-либо причине вы не используете теги struts2 для своих входных данных? Кроме того, я не использовал struts2, но разве это не должно быть
#{condition}
вместо#condition
?2. @AnthonyGrist: Определенно нет
#{...}
. пользователь1321648: Как бы вы сделали это в классе?3. Я не использую теги struts, поскольку это не позволяет мне выполнять настройку. Мне нужно отобразить выпадающий список с двумя флажками рядом. Я не могу достичь этого, используя входные теги struts 2.
4. Я также пытался использовать условие- <s:if test=»#regions.value in selectedRegions»>, но это не сработало.
5. @aleksandr M: В моем классе я бы сказал для (Map.Entry<Строка, объект> запись: map.entrySet()) { if(myList.contains(entry.GetValue())) // … }
Ответ №1:
Есть действительно много способов сделать это. Вы также должны проверить <s:checkbox/>
<s:checkboxlist/>
теги and;
Также обратите внимание, что для последующего высыхания вы можете нанести <s:if>
checked="checked"
только вокруг детали, так как все остальное то же самое.
Сохраняя простоту, с вашим кодом как есть, один из способов состоит в использовании OGNL in
(содержит) и OGNL {}
(проекция списка) следующим образом:
<s:iterator value="regions">
<li>
<div class="listClass">
<input type = "checkbox"
id = "myTheater"
<s:if test="%{value in selectedRegions.{value}}">
checked = "checked"
</s:if>
name = "theaterCheckBox"
class = "theaterCheckBox" />
<s:property value="value" />
</div>
<div class="checkboxDiv">
<input type="checkbox" id="allFeatured" class="featuredCheckBox" />
</div>
</li>
</s:iterator>
Комментарии:
1. Спасибо Андреа Лигиос. Это сработало как шарм. Я использовал это- <s:if test=»%{значение в выбранных регионах}»>
2. Отлично, рад, что помогло