增加StringList SpEL ,未测试
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!");
+    }
   }
 }