Używam struts2 i hibernacji w mojej aplikacji. Dodałem ContextLoaderListener do web.xml
.
W ApplicationContext.xml
, Mam 2 takie fasole:
<bean id="TestImpl"
class="Service.Impl.TestImpl">
</bean>
<bean id="testaction"
class="Action.TestAction">
<property name="TestIml" ref="TestImpl"/>
</bean>
W klasie TestAction mam obiekt i metodę tego obiektu w następujący sposób:
private TestImpl test1;
String m = test1.testService();
Ma również ustawiony i ustawiony. kiedy uruchamiam ten projekt, jeśli chodzi o
String m = test1.testService()
Pojawia się wyjątek nullPointerException. Nie jestem pewien, czy cała konfiguracja została wykonana poprawnie lub coś pominięto. proszę pomóż.
Odpowiedzi:
1 dla odpowiedzi № 1Skoro już używasz Struts2 + Spring, dlaczego nie użyć ich wtyczki? które można znaleźć tutaj
Używając wtyczki, uzyskujesz ściślejszą integrację z Struts 2. Daje ci to możliwość wstrzykiwania fasoli do wewnętrznych obiektów ramowych, a nie tylko do własnych fasoli.
Na przykład z wtyczką Struts 2 będziesprawdź wszystkie swoje działania, gdy tworzy je, aby obsłużyć żądanie, i wstrzyknij je. Domyślnie wtyczka Struts2-spring używa autowire po nazwie. więc na przykład w klasie akcji masz ten kod.
public class LoginAction extends UserAction{
public String execute() {
return "success";
}
public AuthenticateLoginService getAuthenticateLoginService() {
return authenticateLoginService;
}
public void setAuthenticateLoginService(
AuthenticateLoginService authenticateLoginService) {
this.authenticateLoginService = authenticateLoginService;
}
private AuthenticateLoginService authenticateLoginService;
}
W swoim pliku applicationContext.xml masz tę konfigurację.
<bean id="authenticateLoginService" class="services.AuthenticateLoginService"
scope="singleton">
<... some properties here
</bean>
Wszystkie klasy akcji, które mają zmienną instancji o nazwie „authenticateLoginService”, wiosna wstrzyknie authenticateLoginService
bean do wszystkich klas o nazwie zmiennej instancji authenticateLoginService
, pod warunkiem, że ma setery i gettery
0 dla odpowiedzi nr 2
Twój test1
jest null
to dlaczego rzuca null pointer exception
na to String m = test1.testService()
linia.
Nie jestem pewien, ale możesz spróbować tego.
property name="test1"
zamiast property name="TestIml"