JUEL中得到identifier的值

      在工程中遇到一個解析開發人員輸入的EL表達式是否合法的需求,主要是判斷EL表達式中的變量是不是工程中提供的。
       本來自己寫了一個輸入的方法, 但是老闆說情況太多,出了問題不好排查,就讓我找了開源的JUEL進行解析。翻看了半天源碼,發現只有代碼裏面構建Tree的代碼有用。
        正菜:在JUEL中所有非Object型的表達式,都會進入TreeValueExpression類,在這個類當中將expression轉化爲EL的Tree對象,這時候expression中含有的表達式就綁定在了identifier中。(在JUEL中稱expression中需要的綁定的類叫做identifier)。依賴包只有一個是juel-impl-2.2.7.jar。
    有用的代碼:
	public static void main(String[] args) {
		String input = "${test == \"23\"||test2<2}";
		TreeBuilder builder = new Builder();
		Tree tree =builder.build(input);
		Iterable<IdentifierNode> node = tree.getIdentifierNodes();
		for(IdentifierNode iden :node){
			System.out.println(iden.getName());
		}
	}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章