首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

关于freemarker生成相对路径的有关问题

2012-01-05 
关于freemarker生成相对路径的问题importjava.io.*importjava.util.HashMapimportjava.util.Mapimporto

关于freemarker生成相对路径的问题
import   java.io.*;
import   java.util.HashMap;
import   java.util.Map;

import   org.apache.commons.logging.Log;
import   org.apache.commons.logging.LogFactory;
import   freemarker.template.*;

public   class   free   {
 
        private   final   Log   logger   =   LogFactory.getLog(getClass());
     
        private   Configuration   freemarker_cfg   =   null;
     
     
     
        public   static   void   main(String[]   args)
        {
                //@todo   自己的一个类
                FromForm   aItem   =   null;
             
                //@todo   装入新闻
                //NewsItem   =   loadNewsItem(1);
                     
                free   test   =   new   free();
             
                Map   root   =   new   HashMap();
                root.put( "newsitem ",   aItem);

                String   sGeneFilePath   =   "/tpxw/ ";
             
                String   sFileName   =   "1.htm ";

                boolean   bOK   =   test.geneHtmlFile( "/tpxw/view.html ",root,   sGeneFilePath,sFileName);
             
        }
     

        /**
          *   获取freemarker的配置.   freemarker本身支持classpath,目录和从ServletContext获取.
          */
        protected   Configuration   getFreeMarkerCFG()
        {
                if   (null   ==   freemarker_cfg)
                {
                        //   Initialize   the   FreeMarker   configuration;
                        //   -   Create   a   configuration   instance
                        freemarker_cfg   =   new   Configuration();

                        //   -   FreeMarker支持多种模板装载方式,可以查看API文档,都很简单:路径,根据Servlet上下文,classpath等等
                     
                        //htmlskin是放在classpath下的一个目录
                        freemarker_cfg.setClassForTemplateLoading(this.getClass(),   "/htmlskin ");


                }
             
                return   freemarker_cfg;
        }

        /**
          *   生成静态文件.
          *
          *   @param   templateFileName   模板文件名,相对htmlskin路径,例如 "/tpxw/view.ftl "
          *   @param   propMap   用于处理模板的属性Object映射
          *   @param   htmlFilePath   要生成的静态文件的路径,相对设置中的根路径,例如   "/tpxw/1/2005/4/ "
          *   @param   htmlFileName   要生成的文件名,例如   "1.htm "
          */
        public   boolean   geneHtmlFile(String   templateFileName,Map   propMap,   String   htmlFilePath,String   htmlFileName   )
        {
                      //@todo   从配置中取得要静态文件存放的根路径:需要改为自己的属性类调用
                String   sRootDir   =   "e:/webtest/htmlfile "   ;
             
                try
                {
                        Template   t   =   getFreeMarkerCFG().getTemplate(templateFileName);

                        //如果根路径存在,则递归创建子目录
                        creatDirs(sRootDir,htmlFilePath);
                     
                        File   afile   =   new   File(sRootDir   + "/ "   +htmlFilePath   +   "/ "   +   htmlFileName);

                        Writer   out   =   new   BufferedWriter(new   OutputStreamWriter(new   FileOutputStream(afile)));

                        t.process(propMap,   out);
                }
                catch   (TemplateException   e)
                {
                        logger.error( "Error   while   processing   FreeMarker   template   "   +   templateFileName,e);
                        return   false;
                }
                catch   (IOException   e)
                {
                        logger.error( "Error   while   generate   Static   Html   File   "   +   htmlFileName,e);


                        return   false;
                }

                return   true;
        }
     
     

        /**
          *   创建多级目录
          *
          *   @param   aParentDir   String
          *   @param   aSubDir     以   /   开头
          *   @return   boolean   是否成功
          */
        public   static   boolean   creatDirs(String   aParentDir,   String   aSubDir)
        {
                File   aFile   =   new   File(aParentDir);
                if   (aFile.exists())
                {
                        File   aSubFile   =   new   File(aParentDir   +   aSubDir);
                        if   (!aSubFile.exists())
                        {
                                return   aSubFile.mkdirs();
                        }
                        else
                        {
                                return   true;
                        }
                }
                else
                {
                        return   false;
                }
        }          

}
我现在是生成的时候报错,
2007-9-13   14:20:33   com.free   geneHtmlFile
严重:   Error   while   generate   Static   Html   File   1.htm
java.io.FileNotFoundException:   Template   /tpxw/view.html   not   found.

我想让他能生成到我工程的路径下,应该怎样做,谢了

[解决办法]
帮顶
[解决办法]
路径问题,多写个"/"吧

热点排行