• 20120425 10:23 velocity 自定义标签实现页面权限控制


    部分页面:

     <table width="100%" border="0" align="center" cellspacing="3" bgcolor="#FFFFFF">
        <tr class="text5">
         <td align="center">
          <input type="hidden" name="selectNodeId" id="selectNodeId" value="" />
          #btnOperate("/pas/business/chenYearAction!insert.do")
           <input type="button" class="input1" name="insertBtn"  value=" 新增 " id="insertBtn"/>
          &nbsp;&nbsp;
          #end
          #if ($chenYears.size() > 0)
           #btnOperate("/pas/business/chenYearAction!update.do")
           <input type="button" class="input1" name="updateBtn"  value=" 修改 " id="updateBtn"/>
           &nbsp;&nbsp;
           #end
           #btnOperate("/pas/business/chenYearAction!delete.do")
           <input type="button" class="input1" name="deleteBtn"  value=" 删除 " id="deleteBtn"/>
           &nbsp;&nbsp;
           #end
          #end
         </td>
        </tr>
       </table>

    配置:

    在/WEB-INF/velocity.properties(没有就创建一个)中添加:

    userdirective=com.shop.pas.system.util.VelocityTagDirective

    处理JAVA类:VelocityTagDirective.java

    package com.shop.pas.system.util;
    
    import java.io.IOException;
    import java.io.Writer;
    
    import org.apache.velocity.context.InternalContextAdapter;
    import org.apache.velocity.exception.MethodInvocationException;
    import org.apache.velocity.exception.ParseErrorException;
    import org.apache.velocity.exception.ResourceNotFoundException;
    import org.apache.velocity.runtime.directive.Directive;
    import org.apache.velocity.runtime.parser.node.Node;
    import org.apache.velocity.runtime.parser.node.SimpleNode;
    
    /**
     * velocity 控制页面展示问题 #btnOperate("权限连接") 被控制部分 #end
     * 
     * @author chenweixian
     * 
     */
    public class VelocityTagDirective extends Directive
    {
     // 指定指令的名称
     @Override
     public String getName()
     {
      return "btnOperate";
     } 
    
     // 指定指令类型为块指令
     @Override
     public int getType()
     {
      return BLOCK;
     } 
    
     // 指令内容操作
     @Override
     public boolean render(InternalContextAdapter context, Writer writer, Node node) throws IOException, ResourceNotFoundException, ParseErrorException, MethodInvocationException
     {
      // 获得缓存信息
      SimpleNode sn_region = (SimpleNode) node.jjtGetChild(0);
      // 获得请求连接
      String requestUrl = (String) sn_region.value(context);
    
      // 判断当前用户是否有此连接权限
      try
      {
       if (UserAccessFlag.flagIsAllowAccess(requestUrl))
       {
        // 显示被自定义标签内的内容
        SimpleNode sn_key = (SimpleNode) node.jjtGetChild(1);
        sn_key.render(context, writer);
       }
      }
      catch (Exception e)
      {
      }
    
      return true;
     }
    }
  • 相关阅读:
    渡一 5-1、2 条件语句补充,初识引用值,typeof,类型转换
    渡一 3-2 js基础知识
    渡一 25 正则表达式
    渡一 15-1 数组去重(上下)
    渡一 14-3 数组,类数组
    渡一 14-1&2 三目运算符,数组,类数组
    3_Guess Fingers
    2_Cat Years
    27_Blog Reader
    26_Json_Example
  • 原文地址:https://www.cnblogs.com/a393060727/p/2942297.html
Copyright © 2020-2023  润新知