2011-09-21 15 views
5

freemarkerのリクエスト属性から値をチェックするにはどうすればよいですか? 私は<の#if *の$ {RequestParameters [ 'servicesettings']} ??>を試みたが、エラーが出る - >freemarkerのリクエスト属性を取得する

が発生しました "*" 行

では、誰が助けることはできますか?

答えて

2

FreeMarker自体が要求パラメータを公開しないため、Webアプリケーションフレームワークによって異なります。 (フレームワークがFreeMarkerの拡張機能の一部であるfreemareker.ext.servlet.FreemarkerServletを使用している場合を除きます)また、通常は、MVCテンプレート、またはHTTP/Servlet固有のものから要求パラメータに直接アクセスしないでください。

エラーメッセージとして、あなたが書いたものに構文エラーがあります。おそらく<#if RequestParameters.servicesettings??>を意味していたでしょう(JSPではありません)。${...} -sをFreeMarkerタグ内で使用しないでください。これは

+1

私のために働いてみました.-> Request.requestattribute;パラメータのリクエスト属性とRequestParameters.somevalueを返します。 – zDroid

1

我々はこのように書く必要があります...あなたは、私は確実に知ることができないことを、データ・モデルにRequestParametersを持っている必要があります:

${Request.requestattribute} 
+0

<#if RequestParameters.servicesettings ??> – zDroid

1

を使用でき

${requestParameters.servicesettings}. 
0

JavaDoc of the FreemarkerServletによる:

すべての要求、要求パラメータ、セッション、およびサーブレットのコンテキスト属性avaテンプレートにはRequest,RequestParameters,SessionApplicationという変数があります。

スコープ変数は、自動スコープ検出によっても利用できます。つまり、Application.attrNameSession.attrNameRequest.attrNameを書くことは必須ではありません。 attrNameと書いても問題ありません。そのような変数がテンプレートに作成されていない場合は、Request、次にSession、そして最後にApplicationに変数を検索します。

あなたは簡単に書くことができます。

${attrName} 

request.setAttribute('attrName', 'value')

を使用してサーブレットリクエストフィルタに設定されている可能性があること(リクエスト属性の値を取得するには、Freemarkerの2.3.27-incubating

と私のために働きました