有沒有辦法讓java bean驗證1.1爲JAX-WS工作?我只看過適用於JAX-RS的文章。我想要做的是能夠將驗證約束註釋添加到特定的操作中,並將一個驗證約束註釋添加到整個SOAP消息或SOAP Body中,以執行使用規範化和Schematron(可能不是Schema驗證)的自定義驗證。Bean Validation和JAX-WS
1
A
回答
0
JAX-WS中的輸入驗證通常是在bean實例化之前在SOAP/XSD Schema/JAXB級別上完成的,這就是爲什麼您找不到顯示如何將這兩件事情一起使用的文章。
此外,bean驗證不能用於使用XML/XPath操作的schematron樣式驗證。
另一方面,Java bean驗證是一個規範。它是Java EE中運行的Java EE的一部分。它可以用於各種框架和庫,包括JAX-WS實現。如果bean驗證沒有被使用的框架原生支持,驗證過程可以手動觸發。
所以,一般來說,可以在JAX-WS中使用bean驗證。也可以實現各種自定義註釋以支持規範化。同時,儘管執行和處理有相似之處,但我不會將標準化和驗證過程混合在一起。
下面的代碼顯示了幾個簡單的例子,說明如何使用bean驗證,儘管有上下文/應用程序框架。
1.值對象必須被標註
public class Address {
@Size(max = 100)
private String City;
@NotNull
@Size(max = 200)
private String Street;
@Email
private String email;
@CountryCode
private String countryCode;
}
2.驗證過程可以手動觸發:
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
Set<ConstraintViolation<Address>> constraintViolations = validator.validate(address);
3.自定義註釋可以被實現爲支持特定用途案例。
下面是一個用於驗證國家代碼的註釋示例。請注意,執行驗證的類包含在註釋代碼中,這在某些情況下是合理的,以避免很多很短的類。
@Documented
@Constraint(
validatedBy = {CountryCode.CountryCodeValidator.class}
)
@Target({ElementType.METHOD,
ElementType.FIELD,
ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface CountryCode {
String message() default "Unknown Country code";
Class<?>[] groups() default {};
Class<? extends ValidationErrorType>[] payload() default {};
/**
* Validator implementation
*/
class CountryCodeValidator implements ConstraintValidator<CountryCode, String> {
private static final Set<String> ISO_COUNTRIES =
new HashSet<String>(Arrays.asList(Locale.getISOCountries()));
private CountryCode countryCodeAnnotation;
@Override
public void initialize(CountryCode countryCodeAnnotation) {
this.countryCodeAnnotation = countryCodeAnnotation;
}
@Override
public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {
if (s==null) {
return true;
}
return ISO_COUNTRIES.contains(s);
}
}
}
相關問題
- 1. Hibernate JPA,Bean Validation和Spring
- 2. 爲什麼oracle不存儲Bean Validation API?
- 3. JAXWS和會話
- 4. JAXWS和ServiceMix的
- 5. XSD,JaxWS和Glassfish
- 6. jaxws-ri和jaxws-rt有什麼區別?
- 7. 我應該在EJB 3.1,JSF2.0和JPA中使用Bean Validation嗎?
- 8. Spring Forms和Validation的問題
- 9. XmlInverseReference,Hibernate,JAXWS和Moxy
- 10. Nancyfx,Ninject和Fluent Validation
- 11. Spring MVC i18n Hibernate Validation
- 12. jaxws-maven-plugin和spring boot
- 13. BeanCreationException創建bean時出錯... ClassFormatError ... javax/validation /驗證需要維持
- 14. 使用Java Bean Validation註釋從POJO生成文檔
- 15. JSF 2中的Bean Validation的resourcebundle參數化可能性?
- 16. 爲什麼Hibernate Tools hbm2ddl生成不考慮Bean Validation註釋?
- 17. jsr 303(Bean Validation)有一個常見的約束庫嗎?
- 18. Validation :: Class和FastCGI不混合?
- 19. JSF中的JAXWS緩存
- 20. edittext validation
- 21. isDigit validation
- 22. checkcolumn validation
- 23. authlogic validation
- 24. InstantiationException:java.math.BigDecimal中在JAXWS:端點
- 25. Spring MVC number validation with typeMismatch
- 26. 春季命名空間問題與JAXWS和地鐵WS
- 27. RPC /與JAXWS
- 28. Websphere中的JAXWS
- 29. GlassFish v3.0.1中的JAXWS和Http Post超時
- 30. Netbeans 6.5和Glassfish V2上的jaxWS問題
我實際上試圖驗證一個WebParam,而不是一個字段。我應該能夠將它添加到WebParam的前面?有沒有辦法讓驗證自動運行?你如何建議從驗證中分離出標準化? – user994165