سؤال

نموذج....

@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() إرجاع الوصف الكامل لأخطاء الربط.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top