我試圖驗證請求中的數字變量,我試圖實現的,此字段是非空和數字。我想爲空和轉換錯誤報告不同的錯誤。基於註釋的請求驗證
我試圖用org.springframework.format.annotation.NumberFormat
爲什麼不@NumberFormat沒有默認的郵件屬性?這有沒有原因被遺漏?我現在必須定製它,因爲我沒有使用消息資源包。
public class AddToJobsShortListWSRequest implements Serializable {
@NumberFormat(style = NumberFormat.Style.NUMBER)
@NotNull(message="ASL01")
private Long userDetailId;
控制器
public ResponseEntity<String> handlePostRequest(String xmlRequest, String... externalIds) {
ResponseEntity<String> response = null;
Set<Enum> enums = new HashSet<Enum>();
AddToJobsShortListWSRequest addToJobsShortListWSRequest = serializationDeserializationSupport.fromString(xmlRequest, AddToJobsShortListWSRequest.class);
if(!jsonRequestValidator.validate(AddToJobsShortListWSError.class, enums, addToJobsShortListWSRequest))
{
response = getBadRequestErrorResponseEntity(enums);
}
else{
.....
}
驗證
private void validate(@SuppressWarnings("rawtypes") Class enumClass, Object object, @SuppressWarnings("rawtypes") Set<Enum> enums) {
BindException errors = new BindException(object, "object");
validator.validate(object, errors);
@SuppressWarnings({"rawtypes"})
List fieldErrors = errors.getFieldErrors();
for (int i = 0; i < fieldErrors.size(); i++) {
if (fieldErrors.get(i) instanceof FieldError) {
String m = ((FieldError) fieldErrors.get(i)).getDefaultMessage();
enums.add(Enum.valueOf(enumClass, m));
}
}
}
是否有任何其他基於註解的驗證適用嗎? 另外,驗證的順序是什麼,哪一個先踢,NumberFormat,NotNull?提前:)
你可以發佈控制器的代碼和錯誤消息嗎? – 2012-03-26 11:22:24
可能是http://stackoverflow.com/questions/149506/annotation-based-spring-bean-validation的重複問題 – kandarp 2012-03-26 11:25:00