gpt4 book ai didi

java - Spring JSR 303验证在编辑/添加时访问其他字段值

转载 作者:搜寻专家 更新时间:2023-11-01 03:33:58 26 4
gpt4 key购买 nike

我有一个要求,其中我想使用一个 Bean 来进行更新/添加。现在我有一个验证,因为名称应该是唯一的。

现在,在添加过程中,验证部分工作正常,因为它通过查询数据库来检查唯一值。

现在,当我想更新同一条记录时,它试图检查数据库中的唯一约束,但由于记录已经存在而失败。

角色 bean

public class Role {
@NotEmpty
@Pattern(regexp = "[a-zA-Z ]*")
@UniqueValue(query = AppConstants.UNIQUE_VALIDATION_DB_QUERY)
private String roleName;
private String roleDesc;
private boolean active;
private String maskRoleName;

public String getRoleName() {
return roleName;
}

public void setRoleName(String roleName) {
this.roleName = roleName;
}

public String getRoleDesc() {
return roleDesc;
}

public void setRoleDesc(String roleDesc) {
this.roleDesc = roleDesc;
}

public boolean isActive() {
return active;
}

public void setActive(boolean active) {
this.active = active;
}
}

我的自定义注释 validator

public class UniqueValueValidator implements ConstraintValidator<UniqueValue, String> {

@Autowired
private ValidationDAO validationDAO;

private String query;

public void initialize(UniqueValue uniqueValue) {
this.query = uniqueValue.query();
}

public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) {
if (!StringUtils.isEmpty(value) && !StringUtils.isEmpty(query)) {
return validationDAO.isValidUniqueField(query, value);
}
return true;
}

}

现在,当我仅从屏幕更新 RoleDesc 字段时,角色名称已验证并抛出验证错误,因为数据库中存在相同的角色名称。有没有一种方法可以让我从屏幕发送其他变量到我的自定义 validator ,说以下是更新屏幕,所以只有在它从以前的值发生变化时才验证该字段?

最佳答案

我通过注释 getter 方法来解决这个问题,其中所有必需的字段都通过该方法作为单个映射返回,并且在 validationIMPL 中我检索了所有必需的信息并进行了相应的处理。

 private String roleName;

@UniqueValue(query = AppConstants.UNIQUE_VALIDATION_DB_QUERY)
public Map<String,String> getUniqueValidator(){
Map<String,String> validatorMap=new HashMap<String,String>();

validatorMap.put("ACTION",type of action(update/new)):
validatorMap.put("VALUE",this.roleName):
return validatorMap;
}

public String getRoleName() {
return roleName;
}

public void setRoleName(String roleName) {
this.roleName = roleName;
}

关于java - Spring JSR 303验证在编辑/添加时访问其他字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37795535/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com