zoukankan      html  css  js  c++  java
  • 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;
     }
    }
  • 相关阅读:
    【小程序】文本超出则省略号
    【wx小程序】读懂app.js
    【js】某字符串多次替换
    【小程序】本地资源图片无法通过 WXSS 获取
    【小程序】(一)注册开始小程序开发
    【小程序】配置本地接口开发
    【css】文本超出行数以省略号显示
    【webstorm】project目录树显示不出
    【Nodejs】Browsersync同步浏览器测试
    获取指定包名下继承或者实现某接口的所有类(扫描文件目录和所有jar)
  • 原文地址:https://www.cnblogs.com/a393060727/p/2942297.html
Copyright © 2011-2022 走看看