2012-01-24 10 views
11

sono assolutamente principiante di Struts2. Sto legando per seguire i tutorial sul sito web di struts. Ho seguito this tutorial. ho qualche problema con questo. Ho creato un progetto web dinamico su eclipse. Poi ho seguito il tutorial. Tuttavia quando eseguo l'esempio ottengo il seguente errore.Struts Hello world example: Non esiste alcuna azione mappata per namespace [/] e nome azione error

There is no Action mapped for namespace [/] and action name [hello] associated with context path [/Hello_World_Struts_2]. - [unknown location] 

Ho la seguente struttura di directory

enter image description here

E il mio file struts.xml è

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE struts PUBLIC 
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
    "http://struts.apache.org/dtds/struts-2.0.dtd"> 

<struts> 

    <constant name="struts.devMode" value="true" /> 

    <package name="basicstruts2" extends="struts-default" namespace="/"> 

    <action name="index"> 
    <result>/index.jsp</result> 
    </action> 

    <action name="hello" class="org.apache.struts.helloworld.action.HelloWorldAction" method="execute"> 
    <result name="SUCCESS">/HelloWorld.jsp</result> 
    </action> 

</package> 

</struts> 

grazie per le vostre risposte.

+0

ho provato ad inserirlo all'interno blocco di codice, ma non ho potuto farlo. Ora, va bene, penso. – erencan

risposta

17

Il file di configurazione struts.xml deve trovarsi sul classpath (a differenza di WEB-INF).

Il tutorial collegato presuppone una build di Maven e indica che il file struts.xml deve essere inserito in src/main/resources, che verrà incluso nel classpath nelle build di Maven. Dal momento che stai ignorando quella parte, probabilmente vorrai metterla nella root della tua directory sorgente.

+1

grazie mille. questo ha risolto il problema. Tuttavia, ottengo un altro errore "nessun risultato definito per azione e risultato positivo" qualche idea? – erencan

+1

@erencan Sì; il nome del tuo risultato è "SUCCESSO", ma 'Action.SUCCESS' è la stringa' "success" '(in minuscolo). Questa è una supposizione, dal momento che non so come sia la tua azione. Inoltre, '" execute "' è il metodo predefinito e non è necessario specificarlo. (E "successo" è il nome del risultato predefinito se non vuoi definirlo esplicitamente.) –

+0

hai ragione. il tutorial ha funzionato bene. grazie mille ancora. – erencan

2

È necessario creare una cartella classes/ sotto WEB-INF/ e inserire il file struts.xml!

2

Fare clic con il tasto destro del mouse sul progetto. Passare al percorso di generazione dell'implementazione delle proprietà e aggiungere tutti i file .jar a/WEB-INF/lib.
Quindi non si dovrebbe ottenere questo errore.

struts.xml deve essere posizionato nella directory: src/struts.xml ..

E WEB-INF/abbiamo bisogno di voi per configurare le montanti sulla base di filtro web.xml ..

1

ho ottenuto lo stesso errore e ottenuto soluzione guardando Tomcat il login al riavvio: DOCTYPE mancavano in struts.xml

così ho aggiunto

<xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE struts PUBLIC 
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
    "http://struts.apache.org/dtds/struts-2.0.dtd"> 

ora funziona!

1

ho risolto il problema aggiungendo tag default-azione-ref, per esempio,

<default-action-ref name="home" /> 

dopo tag pacchetto

in struts.xml

<package name="user" namespace="/" extends="struts-default"> 

<default-action-ref name="upload" /> 
0

Ho avuto lo stesso problema e l'ho affrontato per non aver menzionato correttamente lo spazio dei nomi in struts.xml.

ho aggiunto il seguente frammento nel web.xml:

<welcome-file>login.jsp</welcome-file> 

e anche facendo lo spazio dei nomi come "/" di default ... Spero che risponde alla tua domanda ..

-1

Nel mio caso ho dovuto rinominare Struts.xml --->struts.xml