كيفية قيود repernate valid المستخدم مع Spring 3.x؟
-
21-09-2019 - |
سؤال
أنا أعمل على شكل بسيط للتحقق من صحة الحقول مثل هذه الحقول.
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 من واجهة برمجة تطبيقات التحقق من الصحة.
لجعلها تعمل على حد سواء:
- مصادقة Hibernate 4.1.0 أو أعلى (قم بتنزيله من هنا: http://sourceforge.net/projects/hibernate/files/hibernate-validator)
- واجهة برمجة تطبيقات التحقق من صحة الفول (قم بتنزيلها من هنا: http://repository.jboss.org/maven2/javax/validation/validation-api/1.0.ga/
في حالتي ، استخدمت مصلحة مخصصة (تسجيل 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>