gpt4 book ai didi

java - Spring MVC 验证 : minimum one field required. 至少需要一个字段

转载 作者:行者123 更新时间:2023-12-01 05:48:09 24 4
gpt4 key购买 nike

我在应用程序前端使用 DTO 实体按条件搜索过滤器:

public class MyFilter implements Serializable {

private static final long serialVersionUID = 1L;
private String name;
@Enumerated(EnumType.STRING)
private AccessType accessType;
private List<MyType> userType;
private List<OfficeLocation> officeLocation;
private List<Language> languages;
private String country;

}

以及 getter 和 setter。

在我的 Controller 中:

@RequestMapping
public ModelAndView list(@ModelAttribute("filter") MyFilter myFilter, BindingResult result) {
final ModelAndView mav = new ModelAndView("list");
// validate
MyFilterValidator.validate(myFilter, result);
mav.addObject("filter", myFilter);
if (result.hasErrors()) {
return mav;
}
// ...
return mav;
}

我想通过 validator 类验证搜索表单过滤器:

公共(public)类 MyFilterValidator 实现 org.springframework.validation.Validator {

@Override
public void validate(Object object, Errors errors) {
final MyFilter myFilter = (MyFilter) object;

if (myFilter == null) {
errors.reject("error.one.field.required");
} else {
if (StringUtils.isEmpty(myFilter.getName()) && myFilter.getAccessType() == null
&& myFilter.getUserType() == null && myFilter.getLanguages() == null
&& StringUtils.isEmpty(myFilter.getCountry())
&& myFilter.getOfficeLocation() == null) {
errors.reject("error.one.field.required");
}
}
}

@Override
public boolean supports(Class inClass) {
return MyFilter.class.equals(inClass);
}

}

我需要验证是否填充了一个字段,我的 Filter 类至少填充了一个字段。我怎样才能以简单的方式做到这一点?我需要检查每个属性:StringUtils.isEmpty 或.size()<=0,...?是否可以迭代每个属性并检查其中一个属性是否不为空?要知道某一字段是否已填写?

最佳答案

如果您经常需要此测试,那么值得实现一个小函数,通过反射检查 DAO 的一些带注释的字段。

public DAO {
public String nevermind;

@AtLeastOneOfThem
public String a;

@AtLeastOneOfThem
public String b;
}

/**
* Return True if at least on of the fields annotated by @AtLeastOneOfThem
* is not Empty.
* THIS IS PSEUDO CODE!
*/
public static boolean atLeastOneOfThemIsNotEmpty(Object o) {
for(Field field : getFieldsAnnotatedWith(AtLeastOneOfThem.class, o) {
if (field.get() != null && !field.get().empty()) {
return true;
}
}
return false;
}

如果这工作量太大,那么以传统的手写方式实现检查将是最快的方法。

关于java - Spring MVC 验证 : minimum one field required. 至少需要一个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5407551/

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