AIX用のWebsphereApplicationServerでSpring/Hibernateを使用しています。私のWindowsマシンでは、問題は発生しません。AIXで実行している場合のみです。ユーザーがアカウント番号を使用してログインするときに、ログインIDの前に「0」を付けると、アプリケーションはログインを拒否します。DB2テーブルでは、列は数値タイプであり、「090....」から「90...」への変換に問題はありません。
他の誰かがこのような問題を経験していますか?どちらのマシンにもJavav1.5が搭載されています。
具体的には、フローはFormView->LoginValidator->LoginControllerです。
LoginValidatorでは、loginの値はnullで、接頭辞は0です。0がない場合、値は本来あるべき値です(ただし、これはAIX環境でのみ発生します。2つのWindows環境では問題ありません)。これは、オブジェクトがnullに等しいコードのスニペットです。
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());
}
}
また、文字列からLongを構築し、WebSphereにパッケージ化されているJavaバイナリを使用するためのこの短いJavaプログラムも作成しました。
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
}
}