自定義過濾器

2021-07-25 17:03:00 字數 1579 閱讀 6278

這裡的過濾器的作用主要是在業務邏輯裡面判斷,傳遞的引數是否有誤,然後在實現類裡面去判斷具體的業務資料,執行流程和servlet的過濾器相類似,但是執行時機和作用大不相同,servlet的執行時機是在請求資源,在達到control之前去執行,通過執行鏈,我們的這個過濾器是在control裡,**如下.

先定義個filter介面

裡面的evidence是根據業務邏輯生成的pojo,其中result用於接受過濾的結果

public inte***ce filter
filter實現類(執行具體的業務邏輯)

public class idcardcheckfilter implements filter  error,idcard is invalid:{}!", investableevidence, investableevidence.getidcardauth());

investableresult.setcode(investableresultenum.id_card_auth_invalid.getcode());

investableresult.setmsg(investableresultenum.id_card_auth_invalid.getmsg());

return;}}

}

filterchain介面

public inte***ce filterchain
filterchainimpl

這裡他有個屬性是filters的實現類,可以通過配置檔案給他賦值,把具體的filter的實現類注入進來

public class filterchainimpl implements filterchain 

for (filter filter : filters) is null,check config!", tostringbuilder.reflectiontostring(filter));

}try catch (exception e) execute error!", tostringbuilder.reflectiontostring(filter));

throw new ruleexecuteexception(filter.getclass().getname() + " execute error");}}

}public void setfilters(collectionfilters)

}

配置檔案

<?xml version="1.0" encoding="utf-8"?>

在filter實現類裡面,給result賦值的時候用到了列舉,這種寫法很少見.可以觀賞下

public enum investableresultenum 

public string getmsg()

public byte getcode()

}

spring注入配置檔案

自定義過濾器和全域性過濾器

過濾器中必須有返回值 一般使用花括號 插值,管道符前是要過濾的元素,管道符之後是過濾方法 p 過濾方法中有乙個引數,這個引數就是傳進來的要過濾的元素 過濾器 filters 使用過濾器時出現死迴圈 因為在將原陣列排序後賦值給原陣列,引用空間沒有變化,過濾一直在執行 解決辦法 使用擴充套件符將陣列賦值...

自定義時間過濾器

實現步驟 第一步,引導入 datetime 第二步,引入乙個建立時間,或者 直接寫死乙個時間 第三步,註冊乙個時間過濾器 第四步,實現過濾器的 第五步,在模板中呼叫 示例 一 字典中的 create time datetime 2017,10,20,16,19,0 二 過濾器 def handel ...

自定義Symfony filter 過濾器)

symfony自動生成的filter有一些侷限性,比如不能過濾關聯表的特定字段,過濾的表單只有input和select兩種,下面介紹處理上面兩個問題的解決方案。1.關聯表字段查詢 假設我們有order和user兩張表,order中有user id和user關聯,syfmony預設可以通過user i...