我们正在Websphere Application Server for AIX上使用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看到的内容等。

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

07-24 18:39
查看更多