0

このクラスをインスタンス化しようとすると、次のエラーが発生します。

public class ActivationAjaxBehavior extends AbstractAjaxBehavior {

private static final long serialVersionUID = 3103844752146887631L;

private final String tokenKey = "token";

@SpringBean
private RegistrationService registrationService;

public ActivationAjaxBehavior() {
    super();
    //Injector.get().inject(this);
}

@Override
public void onRequest() {
    RequestCycle requestCycle = RequestCycle.get();
    ServletWebRequest webRequest = (ServletWebRequest) requestCycle
            .getRequest();
    HttpServletRequest request = webRequest.getContainerRequest();
    String extractedToken = (String) request.getParameter(tokenKey);    
    try {
        registrationService.confirmUser(extractedToken);
        proceedToSignInPage();
    } catch (WrongTokenException e) {
        e.printStackTrace();
        proceedToSignUpPage();
    }   
}

private void proceedToSignInPage() {
    throw new RestartResponseException(
            SignInPage.class); 
}

private void proceedToSignUpPage() {
    throw new RestartResponseException(
            RegisterPage.class); 
}

}

ここでは @SpringBean が問題だと思います。しかし、それは春のコンテナで利用可能です...それは他の場所で完全に利用可能です...

@Bean
public IRegistrationService userRegistrationService() {
    return new RegistrationService(databaseBean());
}

そのインジェクターを使用すると、ハッシュが解除されます

java.lang.RuntimeException: error while injecting object
Superclass has no null constructors but no arguments were given
4

1 に答える 1

5

あなたの問題はかなり明確です。注入されるクラスを使用して依存関係を注入するに@SpringBeanは、次の要件を満たす必要があります。

  1. 引数を持たないコンストラクタを持つ
  2. このクラスが他のクラスを拡張する場合、このスーパークラスには引数のないコンストラクターが必要です。
  3. クラスをプロキシするインターフェイスを実装します。

あなたの問題は、最初または2番目のルールのいずれかです。したがって、これらの条件を確認し、それらに従って問題を修正してください。

于 2013-08-20T09:56:53.833 に答える