Переменная скрипта не оценивается внутри атрибута пользовательского тега JSP - PullRequest
2 голосов
/ 09 августа 2011

Я пытаюсь вызвать функцию JavaScript при нажатии на ссылку. Эта функция JavaScript определена в атрибуте тега JSP, и я пытаюсь передать в функцию переменную scriptlet . Однако это не оценивается. Соответствующая часть кода:

<span>
  <mysecurity:secure_link id='<%="editButton_"+commentUUID%>' entitlement="" 
    actionOnClick="editComment('<%= commentUUID %>');return false;"
    isSurroundedByBrackets="true" enableTitle="" disableLink="<%=disableLink%>">
    <span style="color:#0033BB; font:8pt arial;">
      <bean:message key="button.edit" />
    </span>
   </mysecurity:secure_link>
</span>

IE8 упоминает об ошибке JavaScript в левом нижнем углу. Когда я щелкаю правой кнопкой мыши и просматриваю источник, сгенерированный HTML-код выглядит так:

onclick="editComment('<%= commentUUID %>');return false;"

Таким образом, <%=commentUUID%> не было оценено в атрибуте actionOnClick, но оно было успешно оценено в атрибуте id.

Как это вызвано и как я могу это исправить?

Ответы [ 2 ]

1 голос
/ 10 августа 2011

Что в итоге сработало для меня, с советом @BalusC было использовать editcomment (this.id.split ('_') [1]).Правильный рабочий код выглядит следующим образом:

<span>
  <mysecurity:secure_link id='<%="editButton_"+commentUUID%>' entitlement="" 
      actionOnClick="javascript:editComment(this.id.split('_')[1]);return false;"
      isSurroundedByBrackets="true" enableTitle="" disableLink="<%=disableLink%>">
      <span style="color:#0033BB; font:8pt arial;">
         <bean:message key="button.edit" />
      </span>
  </mysecurity:secure_link>
</span>
0 голосов
/ 10 августа 2011

Я не уверен, является ли <mysecurity:secure_link> пользовательской или существующей сторонней библиотекой тегов JSP.Современные теги JSP обычно не оценивают устаревшие выражения scriptlet .Вместо этого лучше использовать EL (язык выражений) .

Сначала убедитесь, что переменная commentUUID сохранена в качестве атрибута страницы или области запроса, чтобы она была доступна для EL,как в следующем примере сервлет :

request.setAttribute("commentUUID", commentUUID);

или с использованием другого скриптлета в JSP:

<% request.setAttribute("commentUUID", commentUUID); %>

или с использованием JSTL <c:set> в JSP:

<c:set var="commentUUID"><%=commentUUID%></c:set>

, затем вы можете получить к нему доступ в EL следующим образом:

<mysecurity:secure_link actionOnClick="editComment('${commentUUID}');return false;" />
...