5

我正在尝试在 freemarker 页面上获取请求参数。但我不知道如何设置像 RequestParameters 这样的隐式变量。

这是一个线程http://forum.springsource.org/showthread.php?t=32846但我没有在哪里设置 RequestParameters 对象。

我在文档中发现的唯一一件事(更多在源代码中)是 FreemarkerServlet 可以放置该变量。但我的应用程序中没有它。所有配置都是通过 Spring 完成的,即 View Resolver。

有谁能够帮助我?

4

3 回答 3

8

确保exposeRequestAttributes在您的中启用FreeMarkerViewResolver,例如

<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
      <property name="cache"  value="true" />
      <property name="prefix" value="" />
      <property name="suffix" value=".ftl" />
      <property name="requestContextAttribute"  value="request" />
      <property name="exposeSpringMacroHelpers" value="true" />
      <property name="exposeRequestAttributes"  value="true" />
      <property name="exposeSessionAttributes"  value="true" />

于 2010-02-16T20:45:35.460 回答
8

对于查询字符串?myparam=abc,您可以myparam这样:

${RequestParameters.myparam}

在 Spring 3 + Freemarker 2.3 上验证。

视图处理程序不需要任何额外的配置。

于 2011-02-09T11:12:01.050 回答
0

基于类注释的 Spring Boot 1.5 将类似于:

package com.openkm.config;

import java.io.IOException;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;
import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;
import org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver;

import freemarker.cache.TemplateLoader;
import freemarker.template.TemplateException;

@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static/**").addResourceLocations("/static/").setCachePeriod(604800); // One week
    }

    @Bean(name = "freeMarkerViewResolver")
    public FreeMarkerViewResolver getFreeMarkerViewResolver() {
        FreeMarkerViewResolver viewResolver = new FreeMarkerViewResolver();
        viewResolver.setExposeSpringMacroHelpers(true);  
        viewResolver.setExposeRequestAttributes(true);
        viewResolver.setExposeSessionAttributes(true);
        viewResolver.setPrefix("/WEB-INF/ftl/");
        viewResolver.setSuffix(".ftl");
        viewResolver.setOrder(0);
        viewResolver.setContentType("text/html; charset=UTF-8");
        viewResolver.setCache(false);
        viewResolver.setRequestContextAttribute("request");
        return viewResolver;
    }
}
于 2017-07-09T16:52:10.720 回答