前端按钮级后端注解获取

一、简述需求:

通过前端页面请求后端,后台获取页面按钮列表,通过编写统一注解,获取按钮列表传输到前端,前端遍历按钮列表

二、实现经过:

1.首先需要定义个注解接口

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * ToolBar生成
 */
@Target({ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ToolBar {

}

2.编写注解的主体

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * toolBar菜单生成
 */
@Order(0)
@Aspect
@Component
public class ToolBarAspect {
    @Resource
    private MenuService menuService;
    
    @Around("@annotation(toolBar)")
    // 可以直接捕获下面这个方法中参数所设定的注解类型
    public Object toolBarAspect(ProceedingJoinPoint joinPoint, ToolBar toolBar)
            throws Throwable {
        //这里做按钮列表的参数接收和到数据库获取按钮的列表的处理,可以根据实际情况编写  ***开始***
        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder
                .getRequestAttributes()).getRequest();
        Integer parentPathId = Integer.valueOf(request.getParameter("permId"));
        List<Menu> pathList = menuService.getSubMenu(parentPathId);
        //按钮列表
        request.setAttribute("toolBarList", pathList);
        //按钮统一url
        request.setAttribute("formUrl", request.getServletPath()+"?permId="+parentPathId);
        //这里做按钮列表的参数接收和到数据库获取按钮的列表的处理,可以根据实际情况编写  ***结束***
        
        return joinPoint.proceed();

    }
}

三、切片调用

直接通过

@ToolBar

注解进行调用,如:

四、前端调用

这边使用的是framemark模板进行遍历

<#list toolBarList as list>
    <div class="layui-inline" >
        <button id="${list.url}">${list.name}</button>
    </div>
</#list>

注意:绑定按钮需要前端进行绑定编写

五、编写自定义注解

java编写自定义注解需要使用到元注解

元注解(meta-annotation):

 元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明。Java5.0定义的元注解:
 1.@Target,
 2.@Retention,
 3.@Documented,
 4.@Inherited

  自定义注解详情  

 

posted @ 2019-01-28 14:44  H2SO3  阅读(580)  评论(0编辑  收藏  举报