Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ public static AppInputParam from(Map<String, Object> rawParam) {
.isRequired(cast(rawParam.getOrDefault("isRequired", true)))
.isVisible(cast(rawParam.getOrDefault("isVisible", true)))
.stringMaxLength(appearance.getStringMaxLength())
.validator(createValidator(appearance, type))
.validator(createValidator(appearance, type, rawParam))
.build();
}

Expand Down Expand Up @@ -105,11 +105,11 @@ public void validate(Map<String, Object> dataMap) {
/**
* 根据外观配置创建校验器
*/
private static Predicate<Object> createValidator(AppearanceConfig config, String type) {
private static Predicate<Object> createValidator(AppearanceConfig config, String type, Map<String, Object> rawParam) {
String displayType = config.getDisplayType();

if (displayType == null) {
return createDefaultValidator(type);
return createDefaultValidator(type, rawParam);
}

return switch (displayType) {
Expand All @@ -118,7 +118,7 @@ private static Predicate<Object> createValidator(AppearanceConfig config, String
case "dropdown" -> createDropdownValidator(config.getOptions());
case "switch" -> createBooleanValidator();
case "multiselect" -> createArrayValidator(config.getOptions());
default -> createDefaultValidator(type);
default -> createDefaultValidator(type, rawParam);
};
}

Expand Down Expand Up @@ -182,7 +182,7 @@ private static Predicate<Object> createBooleanValidator() {
return value -> value instanceof Boolean;
}

private static Predicate<Object> createDefaultValidator(String type) {
private static Predicate<Object> createDefaultValidator(String type, Map<String, Object> rawParam) {
if (type == null) {
return value -> false; // 如果类型未定义,则校验失败
}
Expand All @@ -192,7 +192,11 @@ private static Predicate<Object> createDefaultValidator(String type) {
if (!(value instanceof String str)) {
return false;
}
return lengthBetween(str, 1, DEFAULT_STRING_MAX_LENGTH, true, true);
return lengthBetween(str,
1,
cast(rawParam.getOrDefault("stringMaxLength", DEFAULT_STRING_MAX_LENGTH)),
true,
true);
};

case "integer"-> value -> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ app-engine:
question:
max-length: 20000
user-context:
max-length: 500
max-length: 5000
plugin:
system-creator: 'system'
elsa:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -753,6 +753,42 @@ void shouldFailForNullType() {
// When & Then
assertThrows(AippParamException.class, () -> param.validate(dataMap));
}

@Test
@DisplayName("string 类型长度超限异常")
void shouldReturnFalseWhenValidateStringParamGivenStringOverLimit() {
// Given
Map<String, Object> rawParam = new HashMap<>();
rawParam.put("name", "stringParam");
rawParam.put("type", "String");
rawParam.put("isRequired", true);
rawParam.put("stringMaxLength", 5);

AppInputParam param = AppInputParam.from(rawParam);

// When & Then
Map<String, Object> data = new HashMap<>();
data.put("stringParam", "123456");
assertThrows(AippParamException.class, () -> param.validate(data));
}

@Test
@DisplayName("string 类型长度正常范围内")
void shouldReturnTrueWhenValidateStringParamGivenStringInLimit() {
// Given
Map<String, Object> rawParam = new HashMap<>();
rawParam.put("name", "stringParam");
rawParam.put("type", "String");
rawParam.put("isRequired", true);
rawParam.put("stringMaxLength", 5);

AppInputParam param = AppInputParam.from(rawParam);
Map<String, Object> data = new HashMap<>();
data.put("stringParam", "123");

// When & Then
assertDoesNotThrow(() -> param.validate(data));
}
}
}

Expand Down