سؤال

أنا أعمل على شكل بسيط للتحقق من صحة الحقول مثل هذه الحقول.

public class Contact {

    @NotNull
    @Max(64)
    @Size(max=64)
    private String name;

    @NotNull
    @Email
    @Size(min=4)
    private String mail;

    @NotNull
    @Size(max=300)
    private String text;


}

أقوم بتوفير تبعيات السبات في Getter and Setters على classpath أيضًا. لكنني ما زلت لا أحصل على كيفية التحقق من صحة النموذج البسيط ، لا يوجد في الواقع الكثير من الوثائق لمزيج السبات الربيعي.

@RequestMapping(value = "/contact", method = RequestMethod.POST)
public String add(@Valid Contact contact, BindingResult result) {
    ....
}

هل يمكن أن تشرح ذلك أو إعطاء بعض البرنامج التعليمي ، باستثناء وثائق الربيع 3.x الأصلية

هل كانت مفيدة؟

المحلول

إذا كنت ترغب في استخدام التعليق التوضيحي Valid لتحفيز التحقق من صحة حبة الدعم الخاصة بك. ثم ليس التعليق التوضيحي لـ Hibernate ، إنه javax.validation.valid من واجهة برمجة تطبيقات التحقق من الصحة.

لجعلها تعمل على حد سواء:

في حالتي ، استخدمت مصلحة مخصصة (تسجيل Validator) بدلاً من التعليق على حقول النموذج في حبة الدعم للقيام بالتحقق من الصحة. أحتاج إلى تعيين مفتاح I18N لرسائل الخطأ ، وهذا هو السبب في أنني اضطررت إلى استبدال Spring 3 MessageCoderesolver بمفردي. يحاول الأصل من Spring 3 دائمًا إضافة نوع أو اسم الحقل للعثور على المفتاح الصحيح عندما لا يتم العثور عليه بالطريقة الأولى.

مثال صغير:

import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.WebDataBinder;
...
import javax.validation.Valid;

@Controller
public class RegistrationController
{
    @InitBinder
    protected void initBinder(WebDataBinder binder) 
    {
        binder.setMessageCodesResolver(new MessageCodesResolver());
        binder.setValidator(new RegistrationValidator());
    }

    @RequestMapping(value="/userRegistration.html", method = RequestMethod.POST)
    public String processRegistrationForm(@Valid Registration registration, BindingResult result, HttpServletRequest request) 
{
         if(result.hasErrors())
         {
            return "registration"; // the name of the view
         }

         ...
    }
}

لذا آمل أن يساعد هذا.

بالمناسبة. إذا كان شخص ما يعرف صفحة الويب الرسمية لواجهة برمجة تطبيقات التحقق من Bean ، فيرجى إخبار ... Thanx.

نصائح أخرى

أعلم أنه تم الرد على هذا واحد ... ولكن هنا تبلغ قيمتها 0.02 دولار على أي حال :-) لقد استخدمت نفس المثال الذي كان يشير إليه بوراك ، ولم يتم التذرع تلقائيًا أيضًا ... اضطررت إلى إضافة <mvc:annotation-driven /> إلى ملف سياق التطبيق الخاص بي ... (ثم تم إجراء التحقق من الصحة). تأكد من إضافة تفاصيل MVC أيضًا إلى إعلان المخطط ... يتبع مثال ...

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:util="http://www.springframework.org/schema/util"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.0.xsd
        http://www.springframework.org/schema/util
        http://www.springframework.org/schema/util/spring-util-3.0.xsd
        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
        http://www.springframework.org/schema/mvc
        ">

    <mvc:annotation-driven />
...
</beans>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top