私はSpring MVCアプリケーションのビュー技術としてFreemarkerを使用しています。私はサーバー名とスキームを見つけ出す必要があり、私が試してみるものは何も動作していないようです。 JSPでは、この情報を持つ暗黙のrequest
オブジェクトがありますが、Freemarkerには同等のものがないようです。私はrequestContext
をrc
として公開していますが、rc.request
はnullです。私はRequestContext#getRequest
はFreeMarkerの/反射から、すなわちアクセスすることはできません、保護されているため、あなたがrc.request
を介して要求にアクセスすることはできませんだと思うSpring MVCでフリーメーカのサーバ名とスキームを取得しますか?
<bean id="freemarkerViewResolver"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="cache" value="false" />
<property name="suffix" value=".ftl" />
<property name="order" value="1" />
<property name="exposeRequestAttributes" value="true" />
<property name="requestContextAttribute" value="rc" />
<property name="exposeSpringMacroHelpers" value="true" />
</bean>
<bean id="freemarkerConfig"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPaths">
<list>
<value>${freemarker.templatePath}</value>
</list>
</property>
<property name="defaultEncoding" value="UTF-8" />
</bean>
Hm、それはうまくいくはずです。私は完全性のために '応答'と 'セッション'を投げ込むことができたと思います。なぜ私はこれをしていないのだろうか? – jiggy
Spring-MVCはすでにリクエストをテンプレートに公開していますが、サーブレットリクエスト属性にのみアクセスでき、serverNameやschemeなどのプロパティは要求しないFreeMarker HttpRequestHashModelとしてラップします。 – Chaquotay