Мы используем Spring / Hibernate на сервере приложений Websphere для AIX. На моей машине с Windows проблема не возникает - только при запуске из AIX. Когда пользователь входит в систему с номером учетной записи, если он добавляет префикс «0» к своему идентификатору входа, приложение отклоняет вход в систему. В таблице DB2 столбец имеет числовой тип, и не должно возникнуть проблем при преобразовании «090 ....» в «90 ...»
Кто-нибудь еще сталкивался с такой проблемой? Обе машины имеют Java v1.5.
Если быть более точным, поток будет FormView -> LoginValidator -> LoginController
В LoginValidator значение login равно нулю с префиксом 0. Без 0 значение должно быть тем, чем должно быть (но, опять же, это только в среде AIX - в двух средах Windows это нормально). Вот фрагмент кода, в котором объект равен нулю.
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());
}
}
Я также написал эту короткую Java-программу для создания Long из строки и использования двоичного файла Java, который поставляется вместе с WebSphere
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
}
}
РЕШЕНИЕ