[Java] سبرينغ ويب مفك - التحقق من صحة طلبات الطلب الفردية


Answers

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

استخراج من الصفحة أعلاه:

  1. إضافة ميثودفاليداتيونبوستبرويسور إلى فصل الربيع @ كونفيغوراتيون:

    @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. التعامل مع كونستراينتفيولاتيون إكسيبتيون في طريقةExceptionHandler

Question

أنا تشغيل ويباب في الربيع ويب مفك 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 على أحرف معينة فقط. إذا فشل هذا التحقق من الصحة، أريد أن أعود رسالة إلى المستخدم بدلا من مجرد رمي بعض استثناء غير محدد (الذي سيحدث على أي حال إذا تركت البيانات بيركولات وصولا الى طبقة داو). أنا على علم JSR303 ولكن لم تعمل معها ولا تفهم تماما كيفية تطبيقه في سياق الربيع.

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

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