Nous utilisons Spring/Hibernate sur un serveur d'applications Websphere pour AIX. Sur mon ordinateur Windows, le problème ne se produit pas - uniquement lors de l'exécution d'AIX. Lorsqu'un utilisateur se connecte avec un numéro de compte, s'il préfixe le '0' à son ID de connexion, l'application rejette le login. Dans la table DB2, la colonne est de type numérique et il ne devrait pas y avoir de problème à convertir '090 ....' en '90 ... 'Java Non Conversion chaîne à long objet correctement
Quelqu'un d'autre rencontre-t-il un problème comme celui-ci? Les deux machines ont Java v1.5.
Pour être plus précis, le débit est FormView -> LoginValidator -> LoginController
En LoginValidator, la valeur de connexion est nul avec le préfixée 0. Sans 0, la valeur est ce qu'elle devrait être (mais encore une fois, ce n'est que sur l'environnement AIX - sur 2 environnements Windows ça va bien). Voici l'extrait de code où l'objet est égal à zéro ..
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());
}
}
J'ai aussi écrit ce programme court Java pour la construction d'un long d'une chaîne, et en utilisant le binaire java qui est livré avec 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
}
}
Se pourrait-il que le code convertissant en un Long voit le 0 initial et pense qu'il est octal? –
C'est possible, mais cette plateforme est-elle dépendante? Ce problème ne se produirait-il pas aussi sur une machine Windows? –
Cela ne devrait certainement pas être le problème. Mais essayez d'isoler le code défaillant et ensuite le reproduire par lui-même - une application de console courte est bonne pour cela (ou un test unitaire, bien sûr). –