velocity 模板引擎中,自帶了一些工具類。比如:
- rc 獲取上下文
- DateTool 日期操作類
- 等等
這些自帶的工具類在配置velocity模板引擎解析器時可以指定相關的工具類。如下代碼~
<!--配置試圖解析器-->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
<property name="cache" value="false"/>
<property name="prefix" value=""/>
<property name="suffix" value=".vm"/>
<property name="contentType" value="text/html;charset=utf-8"/>
<property name="toolboxConfigLocation" value="/WEB-INF/toolbox.xml"/>
<property name="dateToolAttribute" value="dateTool"/>
<property name="numberToolAttribute" value="numberTool"/>
<property name="exposeRequestAttributes" value="true"/>
<property name="requestContextAttribute" value="rc"/>
</bean>
其中定義了rc\dateTool\numberTool工具類。
在自帶的方法滿足不了頁面處理時,有時候想自定義一些方法。在toolbox.xml中配置tool,然後指定具體的代碼處理類,頁面就可以調用後臺java代碼啦。既然velocity模板引擎給了我們能力,那對於頁面權限的控制很容易可以想到可以用自定義工具類來實現某元素權限的判斷。
類似僞代碼:
#if($PowerUtils.hasPermition("user_add"))
<button name="add" value=“增加”></button>
#end
PowerUtils類大概的處理邏輯是:
1、獲取當前登錄用戶的權限資源列表
2、判斷資源列表中是否包含“user_add”資源編碼,即是否有"用戶增加"功能權限。
3、反饋boolean 值
如果你使用了shiro或是spring-security權限框架,一般可以考慮使用頁面標籤<shiro …等,但是velocity目前不支持shiro的標籤,只能類似上面調用後臺java類的寫法。
界面的權限控制了顯示,如果能做到服務地址的控制,將會提高系統的安全性。這種級別的話,如果不適用框架,自己寫比較費勁,可能用到的技術:自定義註解,AOP獲取方法註解,判斷權限,大體如此,如果使用權限框架,他們提供了現成的方法使用,非常方便。