سؤال

في مشروعي قمنا بتطوير مشروع باستخدام JSF 1.2 وJBOSS 5.كجزء من المتطلبات الجديدة علينا ترحيله إلى Websphere 7.لكننا نواجه مشكلة أظن أنها مرتبطة بوقت تشغيل جافا الذي يستخدمه WAS داخليًا.إنه غير قادر على وضع int/Integers تلقائيًا، وإلقاء السلاسل لفترة طويلة ضمنيًا.بعد تقديم الفحوصات اللازمة لها أخيرًا، أصبحت عالقًا في استثناء التحقق التالي:

/Star/employeeFormP1.jsp(226,4) '#{StarEmployeeApplicationFormBean.medicalHMO}' لا يمكن تعيين الخاصية "medicalHMO" في الفئة "com.idea.app.bean.StarEmployeeApplicationFormBean" على القيمة "true".

ما يلي الكود ذو الصلة:

   <h:selectBooleanCheckbox id="checkbox1" 
      value="#{StarEmployeeApplicationFormBean.medicalHMO}"
      title="click it to select or deselect"
      immediate="true"
      valueChangeListener="#{StarEmployeeApplicationFormBean.listHMOMedProducts}"
      onchange="return submit()" />

هل يمكن لأي شخص أن يساعدني في استثناء التحقق من الصحة هذا؟

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

المحلول

وجبوس 5 و 7 بنك الإسكان للتجارة هي خدمة JEE5، وبالتالي فإن مجرد impl JSF 1.2 أن تستخدم تنفيذ EL التي تقدمها المنصة. وترد تفاصيل قواعد لنوع الإكراه في وJSP 2.1 المواصفات :

<اقتباس فقرة>   

وعلى سبيل المثال، إذا تكره الباحث إلى سلسلة "مربع" كثافة العمليات إلى عدد صحيح وتطبيق القاعدة لإرغامه على عدد صحيح إلى سلسلة. أو إذا تكره سلسلة إلى ضعف، تطبيق القاعدة لإجبار سلسلة إلى مزدوج، ثم "خدمة Unbox" الناتجة مزدوجة، والتأكد من ضعف الناتج ليس باطلا في الواقع.

واستنادا إلى القواعد المفصلة في المواصفات، وهذا يبدو وكأنه خطأ في تطبيق بنك الإسكان للتجارة. إذا لم تتمكن من العثور على القائمة APAR / إصلاح حزمة الذي يعالج المشكلة، فما استقاموا لكم فاستقيموا الإبلاغ عنه.

نصائح أخرى

وWAS 7.0 في الواقع يستخدم JDK 1.6، وكان 6.1 يستخدم JDK 1.5.

وAutoboxing يعمل بالنسبة لي، الباحث إلى عدد صحيح الخ.

وأنا أتفق مع التعليق الذي سلسلة تحويلات نوع البدائية ليست جزءا من "autoboxing".

وواضع لmedicalHMO هو المفتاح لمشكلتك، ما هو نوع أنها لا تتوقع؟

إذا ل، مثلا، لديك setMedicalHMO (سلسلة NEWVALUE) {...}

وانها قد تكون مثيرة للاهتمام لإضافة اضع آخر setBooleanMedicalHMO (NEWVALUE منطقية) {...}

وربما تكون أنت تستخدم JVM IBM لاحظت وجود خلل في حين يعود فيها إذا ما قورنت مع عدد صحيح طويل مع نفس القيمة باستخدام == ذلك autoboxes وإرجاع false.

وعلى سبيل المثال، وذلك باستخدام هذا الأسلوب:

public boolean amIEqual(int myInt, long myLong){
     return myInt == myLong;
}

وكان amIEqual(3,3) false على JVM IBM كنت تستخدم.

لإصلاح هذا، وأنا استخدم بشكل واضح نوع الكائن:

public boolean amIEqual(Integer myInt, Long myLong){
     return myInt.equals(myLong);
}

والآن، أصبح فجأة amIEqual(3,3) true.

scroll top