ウェブアプリケーションでは、検索を実行しているときにユーザーがfreeTextパラメータにJavaScriptを挿入しないようにしようとしています。Apache Velocityテンプレートのクエリ文字列を置き換える方法は?
これを行うには、Velocityファイルのヘッダにコードを記述して、クエリ文字列にfreeTextというパラメータが含まれているかどうかを確認した後、置換メソッドを使用してパラメータ値内の文字を置き換えます。しかし、ページをロードすると、元のクエリ文字列が表示されます。元のクエリ文字列を、置き換えられた文字を持つ新しいものに置き換える方法がわかりません。
この
は私のコードです:上記のコードで#set($freeTextParameter = "$request.getParameter('freeText')")
freeTextParameter: $freeTextParameter
#if($freeTextParameter)
##Do the replacement:
#set($replacedQueryString = "$freeTextParameter.replace('confirm','replaced')")
replacedQueryString after doing the replace: $replacedQueryString
The query string now: $request.getQueryString()
The freeText parameter now: $request.getParameter('freeText')
#end
予想通り、replacedQueryString変数が変更された(すなわち交換が期待通りに行われている)が、$ request.getQueryString()と$ request.getParameter( 'freeText')は、置き換えが起こったことがないかのように、前と同じです。
パラメータを取得するためにうまく動作するrequest.getParameterメソッドがあるのを見て、同じことを逆にするrequest.setParameterメソッドがあると仮定しましたが、そうではありません。
私はあなたがその交換から期待していることを聞くことができますか? (もちろん、古いものがあった場所に新しい文字列を置く以外の方法はありますか?変更/防止するプロセスは何ですか?)ビューをレンダリングするには遅すぎるかもしれないと思うので、 *リクエストと**サーバーの両面**。 – MyBrainHurts