#struts2 #upgrade #ognl #struts-tags #struts2-jquery-grid
#struts2 #Обновление #ognl #struts-теги #struts2-jquery-grid
Вопрос:
Привет, мы недавно обновили Struts2 с Struts 2.5.22 до 2.5.27. В нашем приложении мы используем Struts Jquery Grid. Мы используем struts2-jquery-grid-plugin-4.0.3.jar библиотека.
Одна из наших потребностей приложения — присвоить идентификатору сетки динамическое значение, которое является свойством компонента. Мой фрагмент кода приведен ниже:
<sjg:grid id="%{#tabGrid.gridId}" caption="%{#tabGrid.gridCaption}" gridModel="%#tabGrid.gridData}" href="%{gridUrl}"-------->
До обновления вышеуказанный фрагмент кода работал. Но после обновления мы не можем назначить свойство компонента grid id.Но мы можем назначить свойство компонента заголовка сетки, как показано в приведенном выше фрагменте кода.Только когда мы присваиваем id свойству компонента, мой код ломается.
Я попытался обойти проблему, присвоив классу grid значение компонента свойства, а не id. Но это изменение повлияет на многие изменения кода в моем приложении. Пожалуйста, предложите, что может быть причиной этого и возможное решение.
Ответ №1:
Начиная с Struts 2.5.26, вы больше не можете %{}
принудительно вычислять OGNL в тегах Struts с использованием общедоступных атрибутов, что приводит к двойной оценке выражения OGNL. Это приспособление задокументировано в S2-061.
Некоторые атрибуты тега могут выполнять двойную оценку, если разработчик применил принудительную оценку OGNL с использованием
%{...}
синтаксиса. Использование принудительной оценки OGNL при ненадежном вводе пользователем может привести к удаленному выполнению кода и снижению безопасности.
Комментарии:
1. Спасибо, Роман, за разъяснение