是否有任何可以像下面的示例一样验证的java注释?
String test;
test = null; //valid
test = ""; //invalid
test = " "; //invalid
test = "Some values"; //valid
提前致谢
答案 0 :(得分:10)
javax.validation或Hibernate Validator中都没有这样的注释。有一个request to add one to Hibernate Validator但由于可以相对容易地编写自己的“不会修复”而被关闭。建议的解决方案是使用您自己的注释类型,如下所示:
@ConstraintComposition(OR)
@Null
@NotBlank
@ReportAsSingleViolation
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
@Retention(RUNTIME)
@Constraint(validatedBy = { })
public @interface NullOrNotBlank {
String message() default "{org.hibernate.validator.constraints.NullOrNotBlank.message}";
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default { };
}
或将@Pattern
注释与需要非空白字符的正则表达式一起使用(作为模式注释accepts nulls and does not match them against the pattern)。
答案 1 :(得分:8)
您需要创建自定义注释:@NullOrNotBlank
首先创建自定义注释:NullOrNotBlank.java
@Target( {ElementType.FIELD})
@Retention(RUNTIME)
@Documented
@Constraint(validatedBy = NullOrNotBlankValidator.class)
public @interface NullOrNotBlank {
String message() default "{javax.validation.constraints.Pattern.message}";
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default {};
}
然后是实际验证器:NullOrNotBlankValidator.java
public class NullOrNotBlankValidator implements ConstraintValidator<NullOrNotBlank, String> {
public void initialize(NullOrNotBlank parameters) {
// Nothing to do here
}
public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) {
if (value == null) {
return true;
}
if (value.length() == 0) {
return false;
}
boolean isAllWhitespace = s.matches("^\\s*$");
return !isAllWhitespace;
}
}
答案 2 :(得分:1)
哪里有一个不错的javax.validation.constraints.Pattern
注释。
您可以使用以下注释字段:
@Pattern(regexp = "^(?!\\s*$).+", message = "must not be blank")
这将检查字段是否匹配正则表达式。正则表达式本身是某物但不是空白(see details here)。它使用负前瞻。
答案 3 :(得分:0)
你试过Hibernate-Validator吗?我认为这就是你要找的东西。
import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.NotBlank;
import org.hibernate.validator.constraints.NotEmpty;
public class MyModel {
@NotNull
private String str1;
@NotEmpty
private String str2;
@NotBlank
private String str3;
}
答案 4 :(得分:0)
最好的方法是创建自己的约束验证器,
$ServicePrincipalConnection = Get-AutomationConnection -Name 'AzureRunAsConnection'
Add-AzAccount -ServicePrincipal -TenantId $ServicePrincipalConnection.TenantId -ApplicationId $ServicePrincipalConnection.ApplicationId -CertificateThumbprint $ServicePrincipalConnection.CertificateThumbprint
$rgname ="rg-name"
$vmname ="vmName"
$ScriptToRun = "c:\temp\shutdown.ps1" #file exists in the VM
Invoke-AzVMRunCommand -ResourceGroupName $rgname -Name $vmname -CommandId 'RunPowerShellScript' -ScriptPath $ScriptToRun