`
cheneyph
  • 浏览: 292648 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论
收藏列表
标题 标签 来源
【FreeMarker】静态化 freemarker
/**
 * 示例
 * @author cheney
 */
public class FreeMarkerTest extends AbstractJUnit4Test {
	
	@Resource
	private FreeMarkerConfigurer freemarkerConfig;

	@Test
	public void testProcess() throws IOException, TemplateException{
		String templateName = "welcome.ftl";
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("name", "cheney");
		
		Configuration configuration = freemarkerConfig.getConfiguration();
		Template template = configuration.getTemplate(templateName);
	    File file = new File("e:/file.html");
	    Writer out = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");
	    template.process(map, out);
	    org.apache.commons.io.IOUtils.closeQuietly(out);
	}
}
【FreeMarker】spring mvc + freemarker(多个viewResolver) freemarker, spring mvc
/**
		<dependency>
			<groupId>org.freemarker</groupId>
			<artifactId>freemarker</artifactId>
			<version>2.3.20</version>
		</dependency>


applicationContext-mvc.xml
http://blog.csdn.net/shandian534/article/details/5545219 
①order中的值越小,优先级越高。
②而id为viewResolver的viewResolver的优先级是最低的。
	<bean id="viewResolver_jsp"
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/jsp/" />
		<property name="suffix" value=".jsp" />
		<property name="viewClass" value="com.cignacmb.liscont.web.controller.JSPJstlView" />
        <property name="order" value="0" />
	</bean> 
    <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="contentType" value="text/html;charset=UTF-8"></property>
        <property name="requestContextAttribute" value="request" />
        <property name="exposeSpringMacroHelpers" value="true" />
        <property name="exposeRequestAttributes" value="true" />
        <property name="exposeSessionAttributes" value="true" />
        <property name="order" value="1" />
    </bean>


applicationContext.xml
	<!-- freemarker的配置 -->
	<bean id="freemarkerConfig"
		class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
		<property name="templateLoaderPath" value="classpath:ftl" />
		<property name="defaultEncoding" value="utf-8" />
		<property name="freemarkerSettings">
			<props>
				<prop key="template_update_delay">10</prop>
				<prop key="locale">zh_CN</prop>
				<prop key="datetime_format">yyyy-MM-dd</prop>
				<prop key="date_format">yyyy-MM-dd</prop>
				<prop key="number_format">#.##</prop>
			</props>
		</property>
	</bean>
*/


@Controller
@RequestMapping(value="/ftl")
public class FreeMarkerController {
	
	@RequestMapping(value="/welcome.xhtml")
	public ModelAndView getFirstPage(HttpServletRequest request) {
		// welcom就是视图的名称(welcom.ftl)
		ModelAndView mv = new ModelAndView("welcome");
		mv.addObject("name", "My First Spring Mvc");
		return mv;
	}
}

/**
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>Hello ${name}
</body>
</html>
*/

public class JSPJstlView extends JstlView {
	
	/**
	 * http://www.iteye.com/problems/76107
	 * spring实现该方法时返回true,这样相当于view总是存在,
	 * 从而导致其余视图解析器无法得到解析机会。
	 */
	public boolean checkResource(Locale locale) throws Exception {
		File file = new File(this.getServletContext().getRealPath("/")
				+ getUrl());
		return file.exists();// 判断该jsp页面是否存在
	}
}
Global site tag (gtag.js) - Google Analytics