سؤال

أقوم بتطوير تطبيق GWT مع الواجهة الخلفية الربيعية التي تستخدم التحقق من صحة JSR 303. يمكن للتطبيق أن يتصل بدون اتصال واستخدام قاعدة بيانات Browser HTML5/Gears بدلاً من ذلك.

ما هي أفضل طريقة لتنفيذ التحقق من صحة العميل؟ لقد وجدت حتى الآن إطار التحقق من صحة GWT (http://code.google.com/p/gwt-velidation/) ولكن يبدو أنها لم تعد نشطة.

شكرًا!

تحديث:

يوجد مشروع رسمي جديد لـ GWT لدعم التحقق من صحة Bean JSR 303 (رابط هنا). IMO هذه هي السبيل للذهاب بمجرد نضج المشروع بما فيه الكفاية.

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

المحلول

إطار التحقق من الصحة هو إطار التحقق من صحة البيانات من جانب العميل والخادم. تتمثل أدوارها في ضمان امتثال قواعد العمل للبيانات التي تم تمريرها من العملاء إلى الخادم.

يستخدم إطار التحقق من الصحة مشروع التحقق من صحة GWT الذي ينفذ مواصفات "JSR 303: Bean Validation".

تتمثل الفكرة في تزيين فئات كائنات نقل البيانات (DTO) والحقول التي تحتوي على تعليقات توضيحية JSR303 لوصف قواعد صلاحيتها.

  1. يجب تزيين كل كائنات نقل البيانات بشروحات التحقق من الصحة الخاصة بها.
  2. يجب على كل تطبيق خدمة من جانب الخادم التحقق من صحة كائنات نقل البيانات التي يتلقاها من العميل.

على جانب العميل ، لاستخدام التحقق من صحة GWT في مشروعك ، ستحتاج إلى إضافته (إلى جانب الجرة على ClassPath) إلى ملف GWT الخاص بك XML

<inherits name="com.google.gwt.validation.Validation" />

تأكد من تنفيذ DTOs com.google.gwt.validation.client.Interfaces.ivalidatable

للتحقق من الاستخدام من جانب العميل

com.google.gwt.validation.client.interfaces.IValidator.validateProperty((T) model, propertyName);

في استخدام جانب الخادم

com.google.gwt.validation.server.ServerValidator

إنه عمل قليلاً لإعداد هذا بشكل صحيح ولكنه يعمل بشكل مثالي.

نصائح أخرى

GWT 2.5 لديه ميزة جديدة فقط لهذا:https://developers.google.com/web-toolkit/doc/latest/devguidevalidation

ويستخدم مصادقة السبات.

1) ستحتاج إلى توسيع نطاق الملخصة gtvalidatorfactory وتطبيق الفاصوليا على سبيل المثال:

public final class SampleValidatorFactory extends AbstractGwtValidatorFactory {

  /**
   * Validator marker for the Validation Sample project. Only the classes and groups listed
   * in the {@link GwtValidation} annotation can be validated.
   */
  @GwtValidation(Person.class)
  public interface GwtValidator extends Validator {
  }

  @Override
  public AbstractGwtValidator createValidator() {
    return GWT.create(GwtValidator.class);
  }
}

2) ثم أضف هذا إلى gwt.xml الخاص بك:

<inherits name="org.hibernate.validator.HibernateValidator" />
<replace-with
  class="yourpackage.SampleValidatorFactory">
  <when-type-is class="javax.validation.ValidatorFactory" />
</replace-with>

3) التحقق من صحة الفول

Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
Set<ConstraintViolation<Person>> violations = validator.validate(person);

لم أستخدمها بعد ، لكن GWT 2.1 يتضمن بعض دعم التحقق من الصحة.

تحقق من العرض مثال.

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