2012-03-30 12 views
2

Ich habe mehrere XML-Konfigurationen.Mehrere Struts 2 Konfigurationsdateien

struts.xml

<struts> 
    <include file="struts-user.xml" /> 

    <package name="baseInterceptors" extends="struts-default"> 
    <interceptor name="..."> 
     ... 
    </interceptor> 
     ... 
    </package> 

    <package name="default" extends="struts-default,baseInterceptors"> 
    <action name="..."> 
     ... 
    </action > 
     ... 
    </package> 
</struts> 

struts- user.xml

<struts> 
    <package name="user" extends="struts-default,baseInterceptors"> 
    <action name="..."> 
     ... 
    </action > 
    ... 
    </package> 
</struts> 

Aber die Abfangjäger aus baseInterceptors sind in struts-user.xml nicht zur Verfügung. Wie kann ich dieses Problem lösen?

Antwort

2

Konfigurationsdateien werden in folgender Reihenfolge verarbeitet: Die <include> wird verarbeitet, bevor die baseInterceptors und default Pakete verarbeitet werden (gelesen: definiert).

Mit anderen Worten, die enthaltene Datei hängt von Pacakges ab, die noch nicht definiert sind.

Die package configuration docs erklären dies in einer Notiz in der Nähe der Spitze mit einem Ausrufezeichen daneben.


Unrelated, aber Sie haben einige Konfiguration dupliziert, was irreführend ist/uncommunicative: baseInterceptors verläuft bereits struts-default, so gibt es keine Notwendigkeit beide zu verlängern. Erwäge, etwas wie ein application-default Paket zu erstellen, also ist es offensichtlich, dass alles in der App davon ausgehen sollte. Dies eliminiert unnötige Duplizierung und kommuniziert Ihre Absicht.

+0

Ich erstelle Datei 'struts-interceptors.xml' und schließe sie in alle anderen Dateien ein. Thx Sie – gooogenot

+0

@gooogenot Cool, froh, dass Sie es ausgearbeitet haben. Sie müssen es jedoch nicht in alle anderen Dateien aufnehmen. –