سؤال

ونحن نستخدم ربيع / إسبات على خادم بنك الإسكان للتجارة طلب AIX. على ويندوز الجهاز الخاص بي، لا تحدث مشكلة - فقط عندما يلوذ بالفرار AIX. عندما يقوم مستخدم بتسجيل الدخول باستخدام رقم الحساب، إذا كانت بادئة "0" إلى معرف تسجيل الدخول الخاصة بهم، وتطبيق يرفض تسجيل الدخول. في الجدول DB2، العمود هو من نوع عددي، ويجب أن لا يكون هناك مشكلة في تحويل "090 .... 'ل'90 ...'

وأي شخص آخر يعاني من مشكلة مثل هذا؟ كلا الآلات لديها V1.5 جافا.

لتكون أكثر تحديدا، وتدفق هو FormView -> LoginValidator -> LoginController

في LoginValidator، وقيمة الدخول فارغة مع 0. مسبوقة بدون 0، والقيمة هي ما ينبغي أن يكون (ولكن مرة أخرى، وهذا هو فقط على البيئة AIX - في 2 يندوز بيئات أنها على ما يرام). وفيما يلي مقتطف الشفرة حيث يساوي الكائن باطل ..

public class LoginValidator implements Validator  {

    public boolean supports(Class clazz) {
    return Login.class.equals(clazz);
    }

    @SuppressWarnings("all")
    public void validate(Object obj, Errors errors) {
        System.out.println("Inside LoginValidator");
        Login login = (Login) obj;
        //null value
        System.out.println("Before conversion in Validator, store id = " 
              + login.getStoreId()); 
    }
}

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

public class String2Long {
    public static void main(String[] args){
        String a = "09012179";
        String b = "9012179";

        Long _a = new Long(a);
        Long _b = new Long(b);

        System.out.println(a + " => " + _a); //09012179 => 9012179
        System.out.println(b + " => " + _b); //9012179 => 9012179
        System.out.println("_a.equals(_b) " + _a.equals(_b)); //_a.equals(_b) true
    }
}

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

المحلول 2

تحليل SOLUTION

وهناك زميل في العمل فعل بعض البحوث على تحديثات الربيع، وعلى ما يبدو كان هذا الخطأ الصحيح في الخامس 2.5.3:.

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

وCustomNumberEditor يعامل الرقم مع الأصفار البادئة كما عشري (إزالة الدعم ثماني غير المرغوب فيه مع الحفاظ على عرافة)

ونحن تستخدم الربيع 2.0.5. نحن ببساطة استبدال الجرار مع الربيع 2.5.4، وانها عملت كما يجب أن يكون لديك!

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

نصائح أخرى

وكذلك هناك عدد ضخم من الأشياء يحدث هناك. كنت حقا بحاجة لمحاولة عزل المشكلة - العمل على ما يجري إرسالها إلى قاعدة البيانات، ما ينظر إليه من قبل جافا الخ

وحاول أن يشبك عليه في برنامج قصيرة ولكن الكامل الذي <م> فقط يدل على مشكلة - ثم عليك أن تكون في وضع أقوى بكثير لتقديم علة أو إصلاح التعليمات البرمجية

.

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

وفي المرة القادمة، واستخدام TDD.

ويفسر

وأنا لا أعرف الكثير عن جافا، ولكن هذا قد يحدث السلسلة كسلسلة ثماني بسبب الرائدة "0".

وربما يمكنك أن تغلب على هذه باستخدام Long.parseLong (أ، 10).

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