سؤال

أنا جديد على جافا سكريبت وXpages هنا.أقوم بترقية تطبيق ملاحظات قديم إلى xpages.يوجد في xpage الخاص بي حقل وزر حفظ وعنصر تحكم في رسائل الخطأ.يتم استخدام الحقل لحفظ قيمة مسار/اسم nsf الذي كتبه المستخدم لاستخدامه لاحقًا (على سبيل المثال://SAS/address.nsf).كيف يمكنني التحقق من وجود هذا المسار/قاعدة البيانات؟يشبه برنامج Lotusscript السابق هذا (يستخدم حقلين، أحدهما للحصول على مسار الخادم، والآخر للحصول على مسار قاعدة البيانات.ولكن بالنسبة لصفحة xpage الحالية، فإن المتطلب هو استخدام حقل واحد فقط):

svr$= source.FieldGetText("ServerPath")
dbsvr$= source.FieldGetText("DBPath")
Dim db1 As New NotesDatabase(svr$ , dbsvr$)

If Not db1.IsOpen  Then
Messagebox "Cannot find the database."
Call source.GotoField("DBPath")
continue = False
Exit Sub
End If

في الحقل الموجود في صفحة xpage، قمت بإضافة أداة التحقق من الصحة validateExpression.في خاصية التعبير، أقوم بحساب SSJS التالية:

var dbdir:NotesDbDirectory = session.getDbDirectory(null);
var db:NotesDatabase = dbdir.openDatabase(document1.getItemValue("dbpath"));
return db.isOpen();

في خاصية رسالة المدقق، قمت بوضع "لا يمكن العثور على قاعدة البيانات".

الخطأ الذي أواجهه باستمرار هو:

  • التعبير غير صالح.
  • لم يُرجع التعبير قيمة منطقية.

هل يوجد طريقه لاصلاح هذا؟هل هو الاستخدام الخاطئ للمدقق؟لقد قمت بالفعل باختبار قاعدة البيانات المحلية وقاعدة البيانات على خادم آخر.يبدو أن لا شيء يعمل.كل قاعدة البيانات التي جربتها كان لدي حقوق الوصول إليها.

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

المحلول

يجب عليك استخدام Sessueassigner من أجل فتح قاعدة البيانات كمشغل XPAGE - بدلا من مجهول (إذا لم تقم بتسجيل الدخول).أيضا، فكر في إضافة / التقاط حول dbdir.opendatabase () من أجل التقاط الأخطاء فتح قاعدة بيانات مع مسار غير صالح.

أيضا، لاحظ أن ValidateExpression Validator يجب أن يرجع Boolean True أو False.في حالتك dbdir.opendatabase () سيعود NULL إذا لم يتم فتح قاعدة البيانات - مما يعني أن DB.Isopen () ستفشل في العمل لأنه لا يمكن تشغيله على كائن فارغ.

يمكنك التفكير في استخدام RecoverValidator Validator الذي يجب إرجاع رسالة خطأ (وليس منطقية حقيقية أو خطأ).

آمل أن يساعدك ذلك في إكمال التحقق من الصحة.

نصائح أخرى

استخدم كتلة المحاولة/الالتقاط لمحاولة فتح قاعدة البيانات.إذا كان كل شيء على ما يرام، فما عليك سوى الرجوع إلى "صحيح" في كتلة المحاولة.ستُرجع كتلة Catch خطأً، وهو ما سيعالج معظم حالات الفشل المحتملة:خادم خاطئ، اتصال مقطوع، مسار غير صالح، عدم الوصول، وما إلى ذلك.

try {
// open database here and touch some property, doc count, for example
return true;
} catch (e) {
return false; // failed to open database
}

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