1、簡述需求:html
經過前端頁面請求後端,後臺獲取頁面按鈕列表,經過編寫統一註解,獲取按鈕列表傳輸到前端,前端遍歷按鈕列表前端
2、實現通過:java
1.首先須要定義個註解接口web
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.編寫註解的主體spring
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(); } }
3、切片調用數據庫
直接經過後端
@ToolBar
註解進行調用,如:ui
4、前端調用url
這邊使用的是framemark模板進行遍歷spa
<#list toolBarList as list> <div class="layui-inline" > <button id="${list.url}">${list.name}</button> </div> </#list>
注意:綁定按鈕須要前端進行綁定編寫
5、編寫自定義註解
java編寫自定義註解須要使用到元註解
元註解(meta-annotation):
元註解的做用就是負責註解其餘註解。Java5.0定義了4個標準的meta-annotation類型,它們被用來提供對其它 annotation類型做說明。Java5.0定義的元註解:
1.@Target,
2.@Retention,
3.@Documented,
4.@Inherited