Кто-нибудь может ответить, почему это не работает со стойками?

Переменная скриптлета в идентификаторе div

У меня тот же вопрос, что и в приведенной выше ссылке, но со Struts2, когда я помещаю код, как показано ниже, он не работает.

 <s:form>

        <%!int i, j;%>
        <%
            for (i = 0; i < 5; i++) {
        %>
        <%
            for (j = 0; j < 5; j++) {
        %>
        <div class="One" id="j<%=j%>">
            Hey<%=i%></div>
        <%
            }
        %>
        <%
            }
        %>
    </s:form>

Я знаю, что использовать скриптлет нехорошо, но, по крайней мере, он должен работать.


person Amit Kumar    schedule 25.09.2013    source источник
comment
что ты имеешь в виду под does not work ? Какой HTML-вывод вы получите для приведенного выше кода?   -  person coding_idiot    schedule 26.09.2013
comment
Я хочу, чтобы id был значением i. Но в html он показывает id=j‹%=j%› т.е. код jsp не оценивается. Но он оценивается, когда я не использую теги struts.   -  person Amit Kumar    schedule 26.09.2013


Ответы (1)


  1. Избегайте сценариев
  2. Ваш код будет генерировать несколько элементов с одним и тем же идентификатором, что недопустимо.

Решение:

  1. Используйте итератор Struts.
  2. Поместите обе переменные в ID.


<s:form>
    <s:iterator begin="0" end="5" status="i" >
        <s:iterator begin="0" end="5" status="j" >
            <div id="<s:property value="%{'i' + #i.index + 'j' + #j.index}"> ">
                Hey <s:property value="%{#i.index}"/> 
            </div>
        </s:iterator>
    </s:iterator>
</s:form>

Обратите внимание, что

Атрибуты начала, конца и шага доступны только начиная с версии 2.1.7.

person Andrea Ligios    schedule 25.09.2013
comment
Спасибо, но я спрашивал, почему это не работает. Пожалуйста, скажите, если вы знаете. Спасибо. - person Amit Kumar; 25.09.2013