Wicket 超类没有 null 构造函数,但没有给出参数

kbo*_*oom 1 spring constructor wicket superclass

我在尝试实例化此类时遇到此错误:

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); 
}
Run Code Online (Sandbox Code Playgroud)

}

我认为@SpringBean 是这里的问题。但它在 spring 容器中可用......它在其他地方完全可用......

@Bean
public IRegistrationService userRegistrationService() {
    return new RegistrationService(databaseBean());
}
Run Code Online (Sandbox Code Playgroud)

与该注射器未散列它得到

java.lang.RuntimeException: error while injecting object
Superclass has no null constructors but no arguments were given
Run Code Online (Sandbox Code Playgroud)

Pau*_*nis 7

你的问题很清楚。为了使用@SpringBean正在注入的类注入依赖项,必须满足以下要求:

  1. 有一个没有参数的构造函数
  2. 如果这个类扩展了其他类,那么这个超类必须有一个没有参数的构造函数。
  3. 实现一个接口来代理该类。

你的问题要么是第一条规则,要么是第二条规则。因此,请检查这些条件并根据它们解决您的问题。