我有一个对象Foo
,其中包含对对象Bar
的引用,该对象有对对象Baz
的引用,为了使Foo
有效,Bar
必须具有对Baz
的有效且非空的引用。
问题是,Bar
不需要有效的、非空的Baz
才有效,所以我不能简单地将验证放在那里,我需要它在Foo
中。
这里有一个我正在谈论的类结构的简单伪版本:
class Foo {
// Bar needs to have a valid Baz. Something like this would be ideal:
// @HasAValidBaz(message="Baz is required")
Bar bar;
}
class Bar {
// Baz can be null and Bar will still be valid
// But if there _is_ a Baz, it needs to be valid
Baz baz;
}
class Baz {
@NotBlank(message="My String is required")
String myString;
}
我知道我可以用类级自定义验证注释来做到这一点,但问题是这些错误对象和相应的消息应用于类实例,而不是字段实例,我需要能够轻松地在正确的表单字段旁边显示错误消息。
有没有一个好方法可以做到这一点,或者我一直在控制器中实现这种验证?
批注很好,但在这种情况下可能不合适。问题是批注被标记在实际的类上,这意味着你不能在同一个类上有两种类型的验证批注——这似乎是你的问题。也许你更适合使用老式的Spring MVC方法来实现Spring Validator类。这里有一个例子:
public class FooValidator implements Validator {
@Override
public boolean supports(Class<?> clazz) {
return Foo.class.equals(clazz);
}
@Override
public void validate(Object target, Errors errors) {
Foo foo = (Foo) target;
if(foo.getBar() == null) {
errors.rejectValue("bar", "bar[emptyMessage]");
}
else if(foo.getBar().getBaz() == null){
errors.rejectValue("bar.baz", "bar.baz[emptyMessage]");
}
}
}
您的Spring控制器与使用注释的控制器基本相同:
@Controller
public class FooController {
@InitBinder("foo")
protected void initBinder(WebDataBinder binder) {
binder.setValidator(new FooValidator());
}
@RequestMapping(value="fooPage", method = RequestMethod.POST)
public String processSubmit(@Valid Foo foo, BindingResult result, ModelMap m) {
if(result.hasErrors()) {
return "fooPage";
}
...
return "successPage";
}
}
问题内容: 我使用sf.json库在Java Web应用程序中映射传入请求的表单数据。 可以说传入请求是http:// localhost:8080 / app / addProfile ,其表单数据为: 服务器端 : 这种方法的主要问题是,如果对结构进行少量修改,则需要修改整个代码。 有没有可以配置验证所需规则的api? 问题答案: 您可以使用Json验证器:-https: //github.c
我使用sf.json库来映射在java中的Web应用程序中传入请求的表单数据。 假设传入请求http://localhost:8080/app/addProfile表单数据为: 服务器端: 这种方法的主要问题是,如果在结构中有微小的修改,那么整个代码都需要修改。 是否有api可以配置验证所需的规则?
问题内容: 我正在使用数据对象作为ReactJS中组件的道具。 我知道容易验证PropTypes对象本身: 但是,如果我想验证其中的值怎么办?即。data.id,data.title? 问题答案: 您可以用来验证属性: 更新资料 正如@Chris在评论中指出的那样,从React 15.5.0版本开始已移至package 。 更多信息
我试图为以下静态方法编写一个测试: 多谢! 本。
我正在使用Springs的Webclient进行HTTP GET调用。 我如何验证响应对象的属性,我收到作为我的HTTP调用的响应。 我试图通过阻止响应对象来验证平板地图中的出生日期,但这看起来不是最有效的方法。 以下是我代码的摘录。 任何帮助都非常感谢。
我是一个新的论坛和Appium/Android自动化,我需要帮助,以验证对象是否存在我的应用程序之前,我采取下一个行动。 信息:[BOOTSTRAP][info]返回结果:{“value”:“未找到元素”,“status”:7} 信息:将命令推送到appium工作队列:[“find”,{“strategy”:“name”,“selector”:“John Doe”,“context”:“”,“mu