.内置(没有配置toolbox情况)
    1.HttpServletRequest -------------------------$request
    2.HttpServletResponse -----------------------$response
    3.HttpSession ----------------------------------$session
.layout
    1.
.vm
    1.parseinclude
      parse-------动态包含vm文件,文件可共享vm
      include-----引入,不vm表达式做解析
        jsp中的<jsp:include page="" />也是动态引入jsp,但是两个jsp不能共享
    2.减法运算
      #set($index=$index-1)      ##句会出,改成如下:
      #set($index=$index - 1)    ##在减号前后各加一个空格
    3.判断字符是否相等
      #if($a==$b) <div>success</div>#end    ##如果$a$b空,句有错误,改成如下:
      #if("$a"=="$b") <div>success</div>#end 或者
      #if($a&&$b&$a==$b) <div>success</div>#end
    4.javascript中使用vm
        <script>
        #if($a&&$a.length()>0)
            var a="$a"
            alert(a);
        #end
        </script>
    5. foreachcounter(循次数error parse new数)
        velocity.properties中有一段配置
        unter.name = velocityCount              ##义变量名称
        unter.initial.value = 1                          ##义计算从1开始累加
        例如:
        #foreach($n in [1..10])
              #if($velocityCount==$n)
                    <div>数开始$velocityCount</div>
              #end         
        #end
.模板的解析
    1.模板文件的merge
        StringWriter writer = new StringWriter();
        Map context=new HashMap();
        context.put("vm_prop1","12");
      VelocityContext model = new VelocityContext(context);
      model.put("vm_prop2", "14");
   
        try {
            Template tpl = Template("portal.vm");
            (model, writer);
            writer.close();
        } catch (Exception e) {
            ("Can't merge portal.vm", e);
        }
        log.String);
        portal.vm中的vm_prop1vm_prop2两个赋值并解析返回writer
    2.字符串的merge   
      public static boolean evaluate(org.t.Context context, Writer writer, String logTag, Reader reader) throws ParseErrorException, MethodInvocationException, ResourceNotFoundException, IOException {
        SimpleNode nodeTree = null;
        try {
              nodeTree = RuntimeSingleton.parse(reader, logTag, false);
        } catch (ParseException pex) {
              throw new Message());
        }
        if (nodeTree != null) {
              InternalContextAdapterImpl ica = new InternalContextAdapterImpl(context);
              ica.pushCurrentTemplateName(logTag);
        try {
            try {
                nodeTree.init(ica, RuntimeServices());
            } catch (Exception e) {
                ("Velocity.evaluate() : init exception for tag = " + logTag + " : " + e);
            }
            der(ica, writer);
        } finally {
            ica.popCurrentTemplateName();
        }
    return true;
  }
  return false;
}
StringReader reader = new StringReader("#foreach($n in $list) <ul><li>$n.Id</li></ul>#end");
reader为读取一个vm文件里的内容,包含vm表达式,logTag为这一串字符串予一个模板名称(如:"a.vm")contextvm表达式赋值,并reader取的字符串行解析,返回writer
.servlet
    1.可增加一个Listener,在Listener初始化velocity的一些配置,这样避免每个servlet都需要初始化velocity
          Properties props = new Properties();
        try {
            File conf = new ServletContext().getRealPath("WEB-INF/velocity.properties"));
            props.load(new FileInputStream(conf));
        }catch (Exception e) {
            e.printStackTrace();
        }
        try {
            Iterator<Object> iter = props.keySet().iterator();
            while(iter.hasNext()) {
                String key = (String) ();
                Velocity.setProperty(Property(key));
            }
            Velocity.setProperty( RuntimeConstants.RUNTIME_LOG_LOGSYSTEM_CLASS,
                "org.apache.velocity.runtime.log.SimpleLog4JLogSystem" );
            Velocity.setProperty("runtime.log.logsystem.log4j.category", "sys.velocity");
            Velocity.setProperty("resource.loader","file");
            Velocity.setProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, ServletContext().getRealPath("/WEB-INF/templates"));
            Velocity.setProperty("parser.pool.size","3");
            Velocity.setProperty("velocimacro.library","macro_default.vm,macro_expopo.vm");
            Velocity.init();
        } catch (Exception e) {
            e.printStackTrace();
          }
 

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。