Notieren Sie Ihre Tag-Implementierung mit %code% und fügen Sie %code% zu Ihrer Spring-Konfiguration hinzu.
Ich möchte mein Tag (extends TagSupport
) in mein Springframework schreiben. In meiner Tag-Klasse wird ein Dienst verwendet, der automatisch bis zum Frühjahr injizieren sollte. Aber ich bekomme immer Null, scheint Frühling kann Service-Instanz in meine Tag-Klasse nicht injizieren.
Der Code ist wie folgt:
%Vor% taskService
ist immer Null.
Wie kann ich das beheben? Danke.
JSP-Tag-Objekte werden nicht von Spring verwaltet, sie werden vom Servlet-Container verwaltet. Daher können Sie Ihre Tags nicht automatisch in Ihre Tags einfügen.
Wenn Sie Beans aus dem Spring appcontext abrufen müssen, muss Ihr Spring MVC-Controller die Bean als Anforderungsattribut setzen (mit request.setAttribute()
), damit das Tag-Objekt es erreichen kann.
Probieren Sie es aus, indem Sie RequestContextAwareTag
verwenden. Es bietet Ihnen Methoden, RequestContext und dann WebApplicationContext zu erhalten. Schauen Sie sich hier
Sehen Sie sich diese Federpakete in der Frühjahrsdokumentation und in der Quelle an:
Wenn nichts anderes, zeigen Ihnen diese, wie die Feder-Entwickler die Spring-Tags geschrieben haben.
JSP-Tag-Objekte werden nicht von Spring verwaltet, sie werden vom Servlet-Container verwaltet. Daher können Sie Ihre Tags nicht automatisch in Ihre Tags einfügen.
Wenn Sie Beans aus dem Spring appcontext abrufen müssen, muss Ihr Spring MVC-Controller die Bean als Anforderungsattribut setzen (mit @Configurable
), damit das Tag-Objekt es erreichen kann.
Was Sie tun könnten, ist eine statische Methode wie folgt zu erstellen:
%Vor%und dann für Ihr Tag könnten Sie
tun %Vor% Der offensichtliche Nachteil dieses Ansatzes ist, dass Sie dies für jeden Konstruktor tun müssen, aber da <context:component-scan base-package="your.webapp">
nur einen hat, sollte das kein Problem sein. Sie können sogar noch einen Schritt weiter gehen und eine Helper-Superklasse erstellen, die immer Autowiring garantiert:
Der Rest ist so einfach wie das Erweitern Ihrer Klassen von %code% .
Verwenden Sie: -
%Vor%Zuerst schreibe ich das:
%Vor%Und Verwendung:
%Vor%Es ist Arbeit. Aber als habe ich folgendes gefunden: Von Spring unterstützte Tag-Bibliotheken . Wahrheit in meinem Projekt benutze ich immer noch eigene Lösung.
Probieren Sie es aus, indem Sie %code% verwenden. Es bietet Ihnen Methoden, RequestContext und dann WebApplicationContext zu erhalten. Schauen Sie sich hier
Notieren Sie Ihre Tag-Implementierung mit %code% und fügen Sie %code% zu Ihrer Spring-Konfiguration hinzu.
Ich möchte mein Tag (extends %code% ) in mein Springframework schreiben. In meiner Tag-Klasse wird ein Dienst verwendet, der automatisch bis zum Frühjahr injizieren sollte. Aber ich bekomme immer Null, scheint Frühling kann Service-Instanz in meine Tag-Klasse nicht injizieren.
Der Code ist wie folgt:
%Vor%%code% ist immer Null.
Wie kann ich das beheben? Danke.
Was Sie tun könnten, ist eine statische Methode wie folgt zu erstellen:
%Vor%und dann für Ihr Tag könnten Sie
tun %Vor% Der offensichtliche Nachteil dieses Ansatzes ist, dass Sie dies für jeden Konstruktor tun müssen, aber da TagSupport
nur einen hat, sollte das kein Problem sein. Sie können sogar noch einen Schritt weiter gehen und eine Helper-Superklasse erstellen, die immer Autowiring garantiert:
Der Rest ist so einfach wie das Erweitern Ihrer Klassen von SpringTagSupport
.
Zuerst schreibe ich das:
%Vor%Und Verwendung:
%Vor%Es ist Arbeit. Aber als habe ich folgendes gefunden: Von Spring unterstützte Tag-Bibliotheken . Wahrheit in meinem Projekt benutze ich immer noch eigene Lösung.
Tags und Links java spring jsp spring-mvc jsp-tags