فحص نوع JSR-303 قبل الربط
-
28-09-2019 - |
سؤال
نموذج....
@Digits(integer=5, fraction=0, message="The value must be numeric and less than five digits")
private int value;
ملف الفاصوليا ....
<mvc:annotation-driven />
مراقب....
@RequestMapping(value = "/admin/save.htm", method = { RequestMethod.POST })
public ModelAndView saveSection(@Valid @ModelAttribute Section section, BindingResult result) {
if(result.hasErrors()) {
return new ModelAndView("admin/editSection", "section", section);
}
كيف يمكنني تقييد "القيمة" على الأرقام فقط؟ إذا أدخلت شيئًا آخر غير الرقم ، أحصل على هذا الخطأ:
فشل في تحويل قيمة الخاصية من النوع java.lang.string إلى النوع المطلوب java.lang.integer لقيمة العقار ؛ الاستثناء المتداخل هو org.springframework.core.convert.conversionFailedException: غير قادر على تحويل القيمة "A" من النوع java.lang.string إلى type java.lang.integer ؛ الاستثناء المتداخل هو java.lang.illegalargumentexception: غير قادر على تحليل أ
لقد رأيت بعض المنشورات التي تذكر البدء ، لكنني لست متأكدًا من كيفية استخدامه أو إذا كان سيساعدني. هذا يجب حله من قبل. هل هناك أي طريقة لضمان أن يكون رقمًا قبل أن ينفجر؟
أو ، إذا تمكن شخص ما من نشر الرسائل الصحيحة.
حاولت pattern لكن هذا لا يعمل على INTS
المحلول
كما ذكرت ، تحتاج إلى رسالة سهلة الاستخدام في messages.properties
. يمكنك استخدام أحد رموز الرسائل التالية (مع مستويات مختلفة من الانتقائية):
typeMismatch.section.value
typeMismatch.value
typeMismatch.int
typeMismatch
أيضًا ، عندما لا تعرف رمز الرسالة ، يمكنك ببساطة طباعة BindingResult
- انها toString()
إرجاع الوصف الكامل لأخطاء الربط.