2017-06-17 2 views
1

Ich versuche, neue struts2 Anwendung (Annotation-basierte Konfiguration) mit gemeinsamen Kopf-, Fußzeile und Körper, wo Körper ändern auf Menü klicken. Also habe ich auf diesen Link verwiesen, der If you are using annotations alone and no struts.xml, then you have to create a minimal one for this because there's no annotation available to define a custom result type sagt.Struts2 Annotation Alternative für Tag result-Typ von struts.xml

Muss ich noch struts.xml für das result-type-Tag erstellen? Ich versuche, Benutzer Fliesen 3. und bekommen dieses Fehler

Jun 17, 2017 3:26:20 PM org.apache.catalina.core.StandardContext filterStart 
SEVERE: Exception starting filter struts2 
Unable to load configuration. - [unknown location] 
    at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:499) 
    at org.apache.struts2.dispatcher.InitOperations.initDispatcher(InitOperations.java:75) 
    at org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:63) 
    at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:279) 
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:260) 
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:105) 
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4590) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5233) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: Unable to load configuration. - [unknown location] 
    at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:70) 
    at org.apache.struts2.dispatcher.Dispatcher.getContainer(Dispatcher.java:906) 
    at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:445) 
    at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:486) 
    ... 14 more 
Caused by: The Result type [tiles] which is defined in the Result annotation on the class [class org.iibf.crf.action.LoginAction] or determined by the file extension or is the default result type for the PackageConfig of the action, could not be found as a result-type defined for the Struts/XWork package [org.iibf.crf.action#convention-default#/] - [unknown location] 
    at org.apache.struts2.convention.DefaultResultMapBuilder.createResultConfig(DefaultResultMapBuilder.java:443) 
    at org.apache.struts2.convention.DefaultResultMapBuilder.createFromAnnotations(DefaultResultMapBuilder.java:414) 
    at org.apache.struts2.convention.DefaultResultMapBuilder.createResultsFromAnnotations(DefaultResultMapBuilder.java:222) 
    at org.apache.struts2.convention.DefaultResultMapBuilder.build(DefaultResultMapBuilder.java:192) 
    at org.apache.struts2.convention.PackageBasedActionConfigBuilder.createActionConfig(PackageBasedActionConfigBuilder.java:948) 
    at org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildConfiguration(PackageBasedActionConfigBuilder.java:700) 
    at org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildActionConfigs(PackageBasedActionConfigBuilder.java:336) 
    at org.apache.struts2.convention.ClasspathPackageProvider.loadPackages(ClasspathPackageProvider.java:53) 
    at com. 

lassen Sie es mich wissen, wenn Sie mich brauchen mehr Details zu liefern. danke für die Hilfe.

Antwort

1

Das standardmäßige übergeordnete Paket sollte nichtconvention-default aber tiles-default sein. Sie können dies unterscheiden, wenn Sie dem Klassenpfad ein Kacheln-Plug-in hinzufügen und die @ParentPackage("tiles-default")-Annotation auf die Action-Klasse festlegen. Sie können diese Anmerkung der Klasse oder dem Paket hinzufügen, auf die sie von der Aufbewahrungsrichtlinie angewendet wird.

Beachten Sie auch, dass Sie das übergeordnete Paket global definieren können, nicht nur die benutzerdefinierte Aktionsklasse aus dem vorherigen Beispiel. Das heißt, wenn Sie ein Paket default in Ihrer Konfiguration haben, die es global tiles-default und Sie konfigurieren mögen erstreckt verwenden

<constant name="struts.convention.default.parent.package" value="default"/> 
+0

muß ich noch struts.xml Datei mit diesem Code enthält? Gibt es eine andere Struts-Convention-basierte Alternative (jeder Link mit etwas Code ist Hilfe voll) –

+1

Mit diesem Code sollten Sie 'struts.xml' verwenden, jedoch gibt es Alternativen, um Konfigurationseinstellungen über die Eigenschaftendatei oder die Initialisierungsparameter des Filters bereitzustellen Konfiguration in der Annotation 'web.xml' oder' @ WebFilter'. Wenn Sie nach einer konventionsbasierten Lösung suchen, sollten Sie die Annotation auf die Basisklasse oder das Paket setzen. Die Konfiguration, die per Konvention erstellt wird, ist für das übergeordnete Paket "convention-default" konfiguriert. –

Verwandte Themen