您的位置:首页 > 编程语言 > Java开发

web 环境,非web 环境中,freemarker 结合 spring使用。

2009-01-13 09:49 513 查看
<beans>

    <bean id="freeMarkerConfigurer" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">

        <property name="templateLoaderPath" value="/WEB-INF/config/template/" />

        <property name="freemarkerSettings">

            <props>

                <prop key="template_update_delay">0</prop>

                <prop key="default_encoding">GBK</prop>

                <prop key="locale">zh_CN</prop>

            </props>

        </property>

    </bean>

    <bean id="freeMarkerConfiguration" class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean">

        <property name="templateLoaderPath" value="file:D:/Java/workspace/project/WebContent/WEB_INF/config/template" />

    </bean>

    <bean id="templateService" class="com.ahtec.ssi.service.impl.TemplateServiceFreeMarkerImpl">

        <property name="freeMarkerConfigurer" ref="freeMarkerConfigurer" />

        <property name="freeMarkerConfiguration" ref="freeMarkerConfiguration" />

    </bean>

</beans>

 

//WEB

Template t = freeMarkerConfigurer.getConfiguration().getTemplate(templateName);

return FreeMarkerTemplateUtils.processTemplateIntoString(t, model);

//NONE WEB

Template t = freeMarkerConfiguration.getTemplate(templateName);

return FreeMarkerTemplateUtils.processTemplateIntoString(t, model);

在 web 中,可以方便地定位到WEB_INF目录,但在非web中就不那么容易了。综合考虑,将ftl模板放在classpath目录挺好的。用classpath:来定位模板位置。

补一段代码:

@Component
public class TemplateServiceFreeMarkerImpl implements TemplateService {

private final Logger logger = LoggerFactory.getLogger(this.getClass());

@Autowired
private FreeMarkerConfigurer freeMarkerConfigurer;

@Autowired
private Configuration freeMarkerConfiguration;

public void setFreeMarkerConfigurer(FreeMarkerConfigurer freeMarkerConfigurer) {
this.freeMarkerConfigurer = freeMarkerConfigurer;
}

public void setFreeMarkerConfiguration(Configuration freeMarkerConfiguration) {
this.freeMarkerConfiguration = freeMarkerConfiguration;
}

public String getContent(String templateName, Map<String, Object> model) {
try {
Template t = freeMarkerConfigurer.getConfiguration().getTemplate(templateName);
return FreeMarkerTemplateUtils.processTemplateIntoString(t, model);
} catch (Exception ex) {
ex.printStackTrace();
logger.equals(ex.getMessage());
try {
Template t = freeMarkerConfiguration.getTemplate(templateName);
return FreeMarkerTemplateUtils.processTemplateIntoString(t, model);
} catch (Exception e) {
e.printStackTrace();
logger.equals(e.getMessage());
}
}

return null;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息