У меня есть страница JSF2 XHTML, которая определяет параметры просмотра, это позволяет иметь закладки URL.Страница XHTML содержит параметры:
<f:metadata>
<f:viewParam name="searchName" value="#{nbsearchpage.searchName}" />
<!-- More view parameters omitted here for brevity -->
<f:event listener="#{nbsearchpage.searchPreRender}" type="javax.faces.event.PreRenderViewEvent" />
</f:metadata>
На той же странице у меня есть текстовое поле и кнопка, которая позволяет пользователю изменять searchName:
<h:form id="some-id">
<h:inputText value="#{nbsearchpage.searchName}" />
<h:commandButton value="search" action="#{nbsearchpage.search}" />
</h:form>
и, наконец,метод действия search () в bean-компоненте nbsearchpage возвращает на ту же страницу, но с параметрами:
?faces-redirect=true&includeViewParams=true
, которые предоставляют пользователю приятный URL.Когда пользователь вводит «IBM» в поле поиска, URL-адрес перенаправляется на
?searchName=IBM
. Он отлично работает.Но теперь пользователь может ввести выражение EL в текстовое поле searchName, и выражение EL будет оценено.Например, когда пользователь вводит «# {2 + 2}» в текстовое поле, URL-адрес перенаправляется на
?searchName=4
, и я думаю, что этого делать не следует, что позволяет пользователю вводить выражение ELпо соображениям безопасности.Я использую Glassfish 3.1.1.
Есть идеи, как предотвратить автоматическое разрешение EL?Я думаю, что есть принципиальный недостаток с концепцией параметров представления в JSF2 и с перенаправлением?У меня была такая же проблема с областью представления, которая не сохраняется перенаправлениями, и для этого мне пришлось создать собственную область.(Я мог бы использовать флеш прицел).