Проблема с тегами JSP - Java-код как значение - PullRequest
1 голос
/ 21 сентября 2009

У меня проблема с тегами JSP - как я могу вставить значение атрибута в код Java? Это мой код:

<%!
    String ii = new String();
 %>

   <%

    try {
        String id = request.getParameter("a");
        int i = Integer.valueOf(id);
        ii = String.valueOf(i);
    } catch (Exception e) {
        response.sendError(500);
    }

    %>
            <div style="float:right;margin-right:20px;">
                <strong>From: </strong> <em><post:ShowPm postId="<%=ii%>" /></em><br>
            </div>

Если я его запускаю, возникает ошибка 500 - stack В строке 48 находится этот код:

<strong>From: </strong> <em><post:ShowPm postId="<%=ii%>" /></em><br>

Я использую Struts 1 и JSP с собственными тегами (это мой тег).

Ответы [ 2 ]

6 голосов
/ 21 сентября 2009

Звучит так, как будто вам нужно изменить ваше tld, чтобы атрибут мог принимать выражения:

   <attribute>
      ...
      <rtexprvalue>true</rtexprvalue>
      ...
   </attribute>
1 голос
/ 22 сентября 2009

Просто собираюсь дать некоторые отзывы об этой JSP в целом.

Вы понимаете, что переменная "ii" не будет потокобезопасной? II является переменной класса. Создается только один экземпляр сервлета, и через него проходит несколько потоков. Поэтому у вас есть возможность для нескольких потоков редактировать это значение и распечатывать противоречивые результаты.

Решение: объявите его как локальную переменную для метода службы в тегах <% scriptlet%>, а не в <%! декларация%>

Просто интересно, какой смысл этого кода? Превратить параметр в число, а затем снова? Это какая-то попытка проверки? Мне кажется, это очень запутанная ненужная работа. Особенно просто превращение его обратно в строку. Если требуется быть целым числом, почему ваш тег не принимает целое число? Или сделать проверку для себя?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...