gpt4 book ai didi

Java 未正确将字符串转换为长对象

转载 作者:行者123 更新时间:2023-12-02 05:02:53 24 4
gpt4 key购买 nike

我们在 AIX 的 Websphere 应用程序服务器上使用 Spring/Hibernate。在我的 Windows 机器上,只有在 AIX 上运行时才不会出现此问题。当用户使用帐号登录时,如果他们在登录 ID 前添加“0”前缀,应用程序将拒绝登录。在DB2表中,该列是数字类型,将'090....'转换为'90...'应该没有问题

还有人遇到这样的问题吗?两台机器都有 Java v1.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());
}
}

我还编写了这个简短的 Java 程序,用于从字符串构造 Long,并使用与 WebSphere 一起打包的 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
}
}

SOLUTION

最佳答案

那里发生了很多事情。您确实需要尝试隔离问题 - 弄清楚发送到数据库的内容、Java 看到的内容等。

尝试将其固定在一个简短但完整的程序中,只是显示问题 - 然后您将处于更有利的位置来提交错误或修复代码。

关于Java 未正确将字符串转换为长对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/291286/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com