سؤال

أحاول استخدام التحقق من صحة الدعامات للتحقق من الحقول المختلفة التي أدخلها المستخدمون. إذا كان أي شخص قادرًا على مساعدتي في معرفة ما أفتقره ، فسأكون ممتنًا للغاية. هذا ما لدي:

وضعت validation.xml و TestAction-validation.xml في WEB-INF/classes/

هنا validation.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
    "-//OpenSymphony Group//XWork Validator Config 1.0//EN"
    "http://www.opensymphony.com/xwork/xwork-validator-config-1.0.dtd">

<validators>
    <validator name="int" class="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator"/>
    <validator name="stringlength" class="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator"/>
    . . .
</validators>

هنا TestAction-validation.xml:

<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
   "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
  <field name="testInt">
    <field-validator type="int">
      <param name="min">0</param>
      <param name="max">9</param>
      <message>Number not in range</message>
    </field-validator>
  </field>
  <field name="testString">
    <field-validator type="stringlength">
      <param name="minLength">4</param>
      <message>String not long enough.</message>
    </field-validator>
  </field>
</validators>

لي struts.xml يمتد struts-default, ، ولدي فصل عمل بسيط للغاية TestAction الذي يمتد ActionSupport ولديه حقول testInt و testString.

من ما قرأته ، يجب أن يكون هذا كافيًا للدعامات للتحقق من القيم التي تم إدخالها ، لكنها لا تحدث. ماذا ينقصني؟

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

المحلول

لديك خياران ، التحقق من صحة على أساس كل نموذج أو لكل عمل. للتحقق من صحة مستوى الإجراء ، يمكنك ببساطة إنشاء ملف يأخذ الاسم {إجراء الخاص بك} -validation.xml ووضعه في نفس الحزمة مثل فئة الإجراء. للتحقق من صحة مستوى النموذج ، يمكنك إنشاء ملف مماثل يأخذ اسم كائن النموذج ثم توجيه ملف التحقق من صحة الإجراء الخاص بك للتحقق من صحة القواعد في ملف التحقق من النموذج. ((المرجعي)

ضع التحقق من الصحة. ستقوم معظم IDE تلقائيًا بنسخ جميع الموارد إلى الدليل المعني حيث سيتم إنشاء ملف الفصل الخاص بك.

تحديث:

http://struts.apache.org/2.x/docs/validation.html

كيف يتم العثور على مدققات إجراء ما

نصائح أخرى

ربما لأن تعريف DTD

http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd

لم يعد هناك

في بدء التشغيل Struts2 ، أحصل على هذا الاستثناء ولم تعد معترضات التحقق من الصحة تعمل بعد الآن

Line: 1436 - sun/net/www/protocol/http/HttpURLConnection.java:1436:-1
at com.opensymphony.xwork2.util.DomHelper.parse(DomHelper.java:115)
at com.opensymphony.xwork2.validator.DefaultValidatorFileParser.parseValidatorDefinitions(DefaultValidatorFileParser.java:118)
at com.opensymphony.xwork2.validator.DefaultValidatorFactory.retrieveValidatorConfiguration(DefaultValidatorFactory.java:195)
at com.opensymphony.xwork2.validator.DefaultValidatorFactory.parseValidators(DefaultValidatorFactory.java:184)
at com.opensymphony.xwork2.validator.DefaultValidatorFactory.<init>(DefaultValidatorFactory.java:55)

Caused by: java.io.IOException: Server returned HTTP response code: 403 for URL: http://opensymphony.com/xwork/xwork-validator-config-1.0.dtd
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1436)
at org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
at org.apache.xerces.impl.XMLEntityManager.startEntity(Unknown Source)
at org.apache.xerces.impl.XMLEntityManager.startDTDEntity(Unknown Source)
at org.apache.xerces.impl.XMLDTDScannerImpl.setInputSource(Unknown Source)
at org.apache.xerces.impl.XMLDocumentScannerImpl$DTDDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)

استبدال ""<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">"مع DTD جديد جديد

<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">

هذا هو الحل ، وسوف يعمل.

يمكن أن يكون هناك بضعة أشياء من أعلى رأسي.

1) هل تستخدم مكدس التقاطع الافتراضي - يحتوي هذا المكدس على اعتراض التحقق من الصحة وهو مطلوب من أجل التحقق من الصحة ، وإلا يجب عليك تحديد اعتراض التحقق يدويًا في مكدتك.

2) يجب أن تكون التحقق من الصحة. التحقق من الصحة. xml

3) حاول استخدام اسم الطريقة التي ترسلها ضمن فئة الاختبار باسم ملف التحقق من Valitator. يمكن أن يكون لديك اختبار-[method_to_be_validated] -validation.xml

امل ان يساعد!

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