diff --git a/payapi-common/src/main/java/com/supwisdom/dlpay/api/annotation/StringList.java b/payapi-common/src/main/java/com/supwisdom/dlpay/api/annotation/StringList.java
index 2c608df..9b58839 100644
--- a/payapi-common/src/main/java/com/supwisdom/dlpay/api/annotation/StringList.java
+++ b/payapi-common/src/main/java/com/supwisdom/dlpay/api/annotation/StringList.java
@@ -17,5 +17,7 @@
 
   Class<? extends Payload>[] payload() default {};
 
-  String[] value();
+  String[] value() default {};
+
+  String expr() default "";
 }
diff --git a/payapi-common/src/main/java/com/supwisdom/dlpay/api/validator/StringListValidator.java b/payapi-common/src/main/java/com/supwisdom/dlpay/api/validator/StringListValidator.java
index 63f6299..b4300b5 100644
--- a/payapi-common/src/main/java/com/supwisdom/dlpay/api/validator/StringListValidator.java
+++ b/payapi-common/src/main/java/com/supwisdom/dlpay/api/validator/StringListValidator.java
@@ -1,13 +1,15 @@
 package com.supwisdom.dlpay.api.validator;
 
 import com.supwisdom.dlpay.api.annotation.StringList;
+import org.springframework.expression.Expression;
+import org.springframework.expression.ExpressionParser;
+import org.springframework.expression.spel.standard.SpelExpressionParser;
 
 import javax.validation.ConstraintValidator;
 import javax.validation.ConstraintValidatorContext;
 import java.util.Arrays;
 
 public class StringListValidator implements ConstraintValidator<StringList, String> {
-
   private String[] valueList;
 
   @Override
@@ -19,6 +21,31 @@
 
   @Override
   public void initialize(StringList constraintAnnotation) {
-    valueList = constraintAnnotation.value();
+    if (constraintAnnotation.value().length > 0) {
+      valueList = constraintAnnotation.value();
+    } else if (!constraintAnnotation.expr().isEmpty()) {
+      parseExpress(constraintAnnotation.expr());
+    } else {
+      throw new IllegalArgumentException("StringList validator must has `value` or `expr` property");
+    }
+  }
+
+  private void parseExpress(String expr) {
+    ExpressionParser expressionParser = new SpelExpressionParser();
+    Expression expression = expressionParser.parseExpression(expr);
+    Object value = expression.getValue();
+    if (value instanceof String) {
+      valueList = new String[]{(String) value};
+    } else if (value instanceof String[]) {
+      valueList = (String[]) value;
+    } else if (value instanceof Object[]) {
+      valueList = new String[((Object[]) value).length];
+      Object[] realValue = (Object[]) value;
+      for (int i = 0; i < realValue.length; ++i) {
+        valueList[i] = realValue[i].toString();
+      }
+    } else {
+      throw new IllegalArgumentException("parse expr error!");
+    }
   }
 }
