|
80 | 80 | public abstract class AbstractVerifier<T extends Object> implements Verifier<T>, IdCallback<T> {
|
81 | 81 | private static final String TAG = "AbstractVerifier";
|
82 | 82 |
|
83 |
| - /**为 PUT, DELETE 强制要求必须有 id/id{} 条件 |
| 83 | + /**为 PUT, DELETE 强制要求必须有 id/id{}/id{}@ 条件 |
84 | 84 | */
|
85 | 85 | public static boolean IS_UPDATE_MUST_HAVE_ID_CONDITION = true;
|
86 | 86 | /**开启校验请求角色权限
|
@@ -700,8 +700,9 @@ public JSONObject onParseJSONObject(String key, JSONObject tobj, JSONObject robj
|
700 | 700 | throw new IllegalArgumentException(method + "请求," + name + "/" + key + " 不能传 " + finalIdKey + " !");
|
701 | 701 | }
|
702 | 702 | } else {
|
703 |
| - if (RequestMethod.isQueryMethod(method) == false) { |
704 |
| - verifyId(method.name(), name, key, robj, finalIdKey, maxUpdateCount, IS_UPDATE_MUST_HAVE_ID_CONDITION); |
| 703 | + Boolean atLeastOne = tobj == null ? null : tobj.getBoolean(Operation.IS_ID_CONDITION_MUST.name()); |
| 704 | + if (Boolean.TRUE.equals(atLeastOne) || RequestMethod.isUpdateMethod(method)) { |
| 705 | + verifyId(method.name(), name, key, robj, finalIdKey, maxUpdateCount, atLeastOne != null ? atLeastOne : IS_UPDATE_MUST_HAVE_ID_CONDITION); |
705 | 706 |
|
706 | 707 | String userIdKey = idCallback == null ? null : idCallback.getUserIdKey(db, sh, ds, key);
|
707 | 708 | String finalUserIdKey = StringUtil.isEmpty(userIdKey, false) ? apijson.JSONObject.KEY_USER_ID : userIdKey;
|
@@ -746,7 +747,7 @@ private static void verifyId(@NotNull String method, @NotNull String name, @NotN
|
746 | 747 | Object id = robj.get(idKey); //如果必须传 id ,可在Request表中配置NECESSARY
|
747 | 748 | if (id != null && id instanceof Number == false && id instanceof String == false) {
|
748 | 749 | throw new IllegalArgumentException(method + "请求," + name + "/" + key
|
749 |
| - + " 里面的 " + idKey + ":value 中value的类型只能是 Long 或 String !"); |
| 750 | + + " 里面的 " + idKey + ":value 中value的类型只能是 Long 或 String !"); |
750 | 751 | }
|
751 | 752 |
|
752 | 753 |
|
@@ -795,7 +796,7 @@ else if (o instanceof String) {
|
795 | 796 | }
|
796 | 797 | else {
|
797 | 798 | throw new IllegalArgumentException(method + "请求," + name + "/" + key
|
798 |
| - + " 里面的 " + idInKey + ":[] 中所有项的类型都只能是 Long 或 String !"); |
| 799 | + + " 里面的 " + idInKey + ":[] 中所有项的类型都只能是 Long 或 String !"); |
799 | 800 | }
|
800 | 801 | }
|
801 | 802 | }
|
|
0 commit comments