0

私はJSFを使用しています。フォームを送信すると、JSFタグ(h:inputTextなど)からのデータがサーバーにリクエストで渡されます。JSFがリクエストパラメータまたは属性でそれをどのように書き換えるかはわかりません(httpリクエストに精通していません)。'el'言語の使い方を知っています。しかし、送信リクエストに文字列を追加する必要があります。これは、フィルターでその文字列を読み取れるようにする方法です。したがって、どういうわけかJSFタグ(おそらくinputHidden)を使用して、固定名( "MySecretToken"など)でhttpリクエストパラメーターを設定したいので、フィルターで次のように記述できます。

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

HttpServletRequest httpRequest = (HttpServletRequest) request;

if ( isTokenValid( httpRequest.getParameter("MySecretToken") ))
     doThis(...);
else
     doThat(...);

     chain.doFilter(request, response);
}

したがって、問題は「JSFタグ(おそらくinputHidden)を使用して、固定名でhttpリクエストパラメータを設定する方法」です。

4

1 に答える 1

2

最も簡単な方法は、<f:param>in<h:commandXxx>コンポーネントを使用することです。基本的に、指定された名前と値でHTTPリクエストパラメータを追加します。

<h:commandButton ...>
    <f:param name="MySecretToken" value="#{bean.mySecretToken}" />
</h:commandButton>

よりJSF風の方法は、ジョブのカスタムコンポーネントを作成することです。例<my:token />:このカスタムコンポーネントを毎回フォームに自動的に追加するカスタムコンポーネントイベントリスナーを作成することもできます。

于 2013-01-18T14:04:07.573 に答える