Как проверить список. содержится в jsp с использованием тегов struts 2

#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. Отлично, рад, что помогло