AIX 용 Websphere Application Server에서 Spring/Hibernate를 사용하고 있습니다. 내 Windows 컴퓨터에서는 AIX에서 실행될 때만 문제가 발생하지 않습니다. 사용자가 계정 번호로 로그인하면 로그인 ID 앞에 '0'이 붙으면 응용 프로그램이 로그인을 거부합니다. DB2 테이블에서 열은 숫자 유형이며 '090 ....'을 '90 ... '로 변환하는 데 문제가 없어야합니다.Java가 문자열을 Long Object로 올바르게 변환하지 않습니다.
다른 누구나 이와 같은 문제가 발생합니까? 두 시스템 모두 Java v1.5입니다.
더 구체적으로, 흐름은 FormView -> LoginValidator -> 인 LoginControllerLoginValidator에서 로그인의 값이 0이 없으면 0 접두어와 null의 경우, 값은 그것이 있어야 무엇인가 (그러나 다시 말하지만, 이것은 AIX 환경에서만 가능합니다. 2 개의 Windows 환경에서는 괜찮습니다. 여기에 나는 또한 문자열에서 롱을 구성하고,
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
}
}
는 WebSphere
와 함께 패키지되어있는 자바 바이너리를 사용하는이 짧은 Java 프로그램을 작성한 객체가 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으로 변환하는 코드가 초기 0을보고 그것이 8 진이라고 생각할 수 있습니까? –
가능하지만 플랫폼에 따라 다릅니 까? 그 문제는 Windows 컴퓨터에서도 발생하지 않습니까? –
확실히 그게 문제가 아니어야합니다. 그러나 실패한 코드를 분리하여 자체적으로 재현 해보십시오. 짧은 콘솔 앱이이 기능을 잘 수행합니다 (물론 단위 테스트입니다). –