لماذا لا يعمل التحقق من صحة الدعامات معي؟
-
21-09-2019 - |
سؤال
أحاول استخدام التحقق من صحة الدعامات للتحقق من الحقول المختلفة التي أدخلها المستخدمون. إذا كان أي شخص قادرًا على مساعدتي في معرفة ما أفتقره ، فسأكون ممتنًا للغاية. هذا ما لدي:
وضعت 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 تلقائيًا بنسخ جميع الموارد إلى الدليل المعني حيث سيتم إنشاء ملف الفصل الخاص بك.
تحديث:
نصائح أخرى
ربما لأن تعريف 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
امل ان يساعد!