2017-02-24 1 views
0

Ich habe eine Klasse Wicket Session alsWie man Frühlingsbohne in der Wicket Sitzungsklasse autowire?

public class IASession extends AuthenticatedWebSession { 
    private static final long serialVersionUID = 3529263965780210677L; 

    @SpringBean 
    private UserService userService; 

    public IASession(Request request) { 
     super(request); 
    } 

    @Override 
    public boolean authenticate(String username, String password) { 

     // Get the user 
     UserDetailsDTO user = userService.findByEmail(username); 

     if(null != user && user.getPassword().equals(password)) 
      return true; 
     else 
      return false; 
    } 

    @Override 
    public Roles getRoles() { 
     Roles roles = new Roles(); 
     roles.add("SIGNED_IN"); 
     return roles; 
    } 
} 

In dieser Klasse folgt, ich versuche @SpringBean Wicket-Feder annnotation mit Spring Service autowire. Aber wenn ich versuche mich anzumelden, bekomme ich einen Fehler.

Last cause: null 
WicketMessage: Method onFormSubmitted of interface org.apache.wicket.markup.html.form.IFormSubmitListener targeted at [StatelessForm [Component id = login-form]] on component [StatelessForm [Component id = login-form]] threw an exception 

Wicket ist nicht in der Lage, die userService Frühling Bohne autowire und deshalb ist es null ist.

Was kann ich tun, um das Problem zu beheben?

+0

Ich habe Wicket zuvor nicht verwendet, aber ist IASession im Kontext der Spring-Anwendung sichtbar? Ich sehe keine Anmerkung zu dieser Klasse, die darauf hinweisen würde. Wenn Ihre Zielklasse nicht von Spring verwaltet wird, können Sie nichts darin automatisch ansteuern. Wird Ihr UserService auch von Spring verwaltet? –

Antwort

4

Da die Sitzung keine Komponente oder Verhalten ist, müssen Sie den Konstruktor überschreiben und Injector.get.inject (this) aufrufen. Siehe die SpringComponentInjector doc.

public IASession(Request request) { 
     super(request); 
     Injector.get().inject(this); 
    } 
+0

Sie scheinen Erfahrung mit Wicket mit Spring zu haben. Wenn Sie irgendeine Referenzseite für Wicket + Spring wissen, lassen Sie es mich wissen. Danke, es hat mein Problem gelöst :) –

Verwandte Themen