ビュー パラメータを定義する 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>
最後に、nbsearchpage Bean のアクション メソッド search() が同じページに戻りますが、パラメータが含まれます。
?faces-redirect=true&includeViewParams=true
これにより、ユーザーに適切な URL が提供されます。ユーザーが検索フィールドに「IBM」と入力すると、URL がリダイレクトされます。
?searchName=IBM
それは完全にうまく機能します。しかし、ユーザーは searchName テキストフィールドに EL 式を入力できるようになり、EL 式が評価されます。たとえば、ユーザーがテキスト フィールドに「#{2+2}」と入力すると、URL は次の URL にリダイレクトされます。
?searchName=4
これは、セキュリティ上の理由から、ユーザーが EL 式を入力できるようにするべきではないと思います。Glassfish 3.1.1 を使用しています。
この自動 EL 解決を防ぐ方法はありますか? JSF2 のビュー パラメータの概念とリダイレクトに根本的な欠陥があると思いますか? リダイレクトに耐えられないビュー スコープで同じ問題が発生したため、独自のスコープを作成する必要がありました。(フラッシュスコープを使用することもできました)。