Устраняет проблему с загрузкой сетки Jquery после обновления Struts до 2.5.27 с Struts 2.5.22

#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. Спасибо, Роман, за разъяснение