Browse Source

添加 addEnum(...)

James 5 years ago
parent
commit
58e9bca83f
1 changed files with 41 additions and 0 deletions
  1. 41 0
      src/main/java/com/jfinal/template/Engine.java

+ 41 - 0
src/main/java/com/jfinal/template/Engine.java

@@ -285,6 +285,47 @@ public class Engine {
 	}
 	
 	/**
+	 * 添加枚举类型,便于在模板中使用
+	 * 
+	 * <pre>
+	 * 例子:
+	 * 1:定义枚举类型
+	 * public enum UserType {
+	 * 
+	 *   ADMIN,
+	 *   USER
+	 *   
+	 *   public String hello() {
+	 *      return "hello";
+	 *   }
+	 * }
+	 * 
+	 * 2:配置
+	 * engine.addEnum(UserType.class);
+	 * 
+	 * 3:模板中使用
+	 * #if( u == UserType.ADMIN )
+	 *    #(UserType.ADMIN)
+	 *    
+	 *    #(UserType.ADMIN.name())
+	 *    
+	 *    #(UserType.ADMIN.hello())
+	 * #end
+	 * 
+	 * </pre>
+	 */
+	public Engine addEnum(Class<? extends Enum<?>> enumClass) {
+		Map<String, Enum<?>> map = new HashMap<>();
+		
+		Enum<?>[] es = enumClass.getEnumConstants();
+		for (Enum<?> e : es) {
+			map.put(e.name(), e);
+		}
+		
+		return addSharedObject(enumClass.getSimpleName(), map);
+	}
+	
+	/**
 	 * Set output directive factory
 	 */
 	public Engine setOutputDirectiveFactory(OutputDirectiveFactory outputDirectiveFactory) {