[java] Spring Web MVC - التحقق من صحة الطلبات الفردية



0 Answers

يبدو هذا ممكنا الآن (حاول مع الربيع 4.1.2) ، انظر https://raymondhlee.wordpress.com/2015/08/29/validating-spring-mvc-request-mapping-method-parameters/

مقتطف من الصفحة أعلاه:

  1. إضافة MethodValidationPostProcessor إلى فئة SpringConfiguration:

    @Bean
    public MethodValidationPostProcessor methodValidationPostProcessor() {
        return new MethodValidationPostProcessor();
    }
    
  2. أضفValidated إلى فئة وحدة التحكم

  3. استخدمSize فقط قبلRequestParam

    @RequestMapping("/hi")
    public String sayHi(@Size(max = 10, message = "name should at most 10 characters long") @RequestParam("name") String name) {
        return "Hi " + name;
    

    }

  4. معالجة ConstraintViolationException في أسلوبExceptionHandler

Question

أنا أشغّل webapp في Spring Web MVC 3.0 ولديّ عدد من أساليب التحكم التي تكون توقيعاتها على النحو التالي:

@RequestMapping(value = "/{level1}/{level2}/foo", method = RequestMethod.POST)
public ModelAndView createFoo(@PathVariable long level1,
        @PathVariable long level2,
        @RequestParam("foo_name") String fooname,
        @RequestParam(value = "description", required = false) String description);

أود إضافة بعض التحقق من الصحة - على سبيل المثال ، يجب أن يكون description محددًا بطول معين أو يجب أن يحتوي fooname على أحرف معينة فقط. في حالة فشل التحقق من الصحة ، أريد إرجاع رسالة إلى المستخدم بدلاً من رمي بعض الاستثناءات التي لم يتم تحديدها (والتي قد تحدث على أي حال إذا قمت بإسقاط البيانات لأسفل إلى طبقة DAO). أنا على دراية بـ JSR303 ولكني لم أعمل معه ولا أفهم كيفية تطبيقه في سياق الربيع.

من خلال ما أفهمه ، سيكون هناك خيار آخر لربط @RequestBody بكائن نطاق بأكمله وإضافة قيود التحقق من الصحة هناك ، ولكن حاليًا يتم إعداد الرمز الخاص بي لقبول المعلمات الفردية كما هو موضح أعلاه.

ما هي الطريقة الأكثر مباشرة لتطبيق التحقق من الصحة على معلمات الإدخال باستخدام هذا النهج؟






Related