У меня есть страница 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>
На той же странице у меня есть текстовое поле и кнопка, которая позволяет пользователю изменять имя_поиска:
<h:form id="some-id">
<h:inputText value="#{nbsearchpage.searchName}" />
<h:commandButton value="search" action="#{nbsearchpage.search}" />
</h:form>
и, наконец, метод поиска действий() в nbsearchpage bean возвращается на ту же страницу, но включает в себя параметры:
?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 и с перенаправлением? У меня была та же проблема с областью представления, которая не переносит перенаправления, и для этого мне пришлось создать собственную область. (Я мог бы использовать флэш-область).