我想知道我在这里做错了什么:
<validators>
<field name="cli.idCli" >
<field-validator type="requiredString" short-circuit="true">
<message>Required field (*)</message>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">8</param>
<param name="maxLength">8</param>
<message>ID must has 8 characters</message>
</field-validator>
</field>
</validators>
因为,实际上我收到了这个错误:
ERROR com.opensymphony.xwork2.validator.AnnotationActionValidatorManager Caught exception while loading file .../action/ServiceAction-findPets-validation.xml Invalid validation type: requiredString - field-validator
另外,我想知道进行 ajax 调用(并发送 JSON 数据)是否可以验证这些数据的存在?我的意思是通过 .xml validator 。此外,如果我实现 Validateable 接口(interface),每次请求到达此操作时都会触发此方法吗?有没有办法指定它是哪个操作方法?
最佳答案
名称区分大小写,您应该使用
<field-validator type="requiredstring" short-circuit="true">
数据填充到操作后可以进行验证。您可以使用 *-validation.xml
以声明式方式执行此操作,也可以通过 validate()
以编程方式执行此操作。
您可以配置validation
拦截器在这两种方式之间进行选择,因为默认情况下validate()
会在声明性验证完成后运行,即使它们是短路的。
考虑使用alwaysInvokeValidate
参数。如果您使用别名验证文件作为ActionClass-alias-validation.xml
,则仅针对该操作别名运行验证。您可以在映射操作方法时使用此别名。
关于java - 如何在 Struts 2 中正确验证字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25027081/