0

JBoss seam を使用して開発された Web アプリケーションのフロントエンドに取り組んでいます。ユーザー ログイン時にエラーが発生しましたNullPointerExceptionが、それがどのように発生するのかわかりません。ログに基づいた要約を次に示します。

ユーザーがログインしようとすると、LoginBean の認証メソッドが実行されました

    public class LoginBean{
            //both from org.jboss.seam.security package
            @In
            private Credentials credentials

            @In
            private Identity identity

            public boolean authenticate(){
                    ...

                    //false
                    logger.info(identity.getCredential null? == " + identity.getCredential==null);

                    //this returns true
                    result = webAuthentication.login(credential.getUsername(), credential.getPassword());

                    return result;
            }
    }

このコードでは、ID オブジェクトの資格情報属性に引き続きアクセスできます。認証を実行した後、ログには別のクラスのメソッドが実行されたことが示されます。

    public class LoginControllerBean{
            @In 
            private Identity identity; //org.jboss.seam.security

            @Observer("org.jboss.seam.security.loginSuccessful")
            @Begin(join = true)
            public void updateSessionUserStats(){
                    //i can still see this in the log
                    logger.info("Login successful. updating sessionUserInfo....");

                    //throws NullPointerException  
                    logger.info("check identity.getCredential if null == " + identity.getCredential());


                    sessionUser = new SessionUser();
                    //if I remove the log above this call will throw NullPointerException                        
                    sessionUser.setUsername(identity.getCredentials().getUsername());
            }

    }

@Observer(...loginSuccessful)認証直後にアノテーション付きのメソッドが実行されたので、ログインは成功したと思います。

1 番目と 2 番目のクラスの両方の ID オブジェクトは、最初のコードでは問題ないのに、2 番目のコードでは@In annotation. なぜですか?によって注入されます。問題の詳細を説明できない場合identity.getCredentials() throws nullPointerExceptionは、何が原因である可能性がありますか。dentity.getCredentials() throwing nullPointerException?フロントエンド コードにしかアクセスできません。ありがとうございます。

4

1 に答える 1

0

null以外の使用を確実に取得したい場合

  @In(create=true)
    private Identity identity
于 2013-09-05T13:55:49.397 に答える