2015-11-13 3 views
2

Je sais qu'il y a plusieurs autres threads avec la même erreur, mais croyez-moi, aucun d'entre eux m'a aidé à résoudre mon problème.Il n'y a pas d'action mappée pour l'espace de noms [/] et le nom d'action [viewBooks] associé au chemin de contexte [/ SampleTC_test]. - [lieu inconnu]

J'ai une application Web construite sur Java en utilisant Struts2 version struts-2.3.16 et Hibernate.

Mon problème est, dans mon application j'ai struts.xml, en raison de sa taille énorme, je le diviser en trois fichiers XML. L'un est struts.xml principal qui contient deux balise include qui pointe vers deux fichiers strtus-XXX.xml différents de la même application. Mon problème est que seulement un struts-XXX.xml fonctionne et que jamais les actions que j'écris dans le deuxième fichier xml ne fonctionnent pas. Si mon application essaie de signaler une "action" mentionnée dans le deuxième fichier xml, elle n'est pas reconnue.

Voici mon

Code 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.enable.DynamicMethodInvocation" 
     value="false" /> 
    <constant name="struts.devMode" value="true" /> 
    <constant name="struts.custom.i18n.resources" 
     value="ApplicationResources" /> 


    <include file="struts/struts-codeGroup.xml"/> 
    <include file="struts/struts-book.xml"/> 
</struts> 

struts-codeGroup.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.convention.result.path" value="/WEB-INF/"/> 
    <constant name="struts.enable.DynamicMethodInvocation" 
     value="false" /> 
    <constant name="struts.devMode" value="true" /> 
    <constant name="struts.custom.i18n.resources" 
     value="ApplicationResources" /> 

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

    <action name="viewCodeValues" class="com.hibernate.action.CodeValuesAction"> 
      <result name="success">/ViewCodeValues.jsp</result> 
     </action> 

    </package> 
</struts> 

struts-book.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.convention.result.path" value="/WEB-INF/"/> 
    <constant name="struts.enable.DynamicMethodInvocation" 
     value="false" /> 
    <constant name="struts.devMode" value="true" /> 
    <constant name="struts.custom.i18n.resources" 
     value="ApplicationResources" /> 

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


     <action name="viewBooks" class="com.hibernate.action.BookAction" method="viewBooks"> 
      <result name="success">/viewBooks.jsp</result> 
     </action>  
    </package> 
</struts> 

Inclure tag avec entretoises -codeGroup.xml fonctionne très bien, mais les actions dans struts-book.xml ne fonctionnent pas du tout et me donnent l'erreur

Il n'y a pas d'action cartographié pour espace de noms [/] et le nom d'action [viewBooks] associée à chemin de contexte [/SampleTC_test ] - [emplacement inconnu]

Répondre

1

Vous ne pouvez pas avoir deux packages avec le même nom. Utilisez quelque chose comme

<package name="default1" namespace="/" extends="struts-default"> 
    <!-- ... --> 
</package> 

<package name="default2" namespace="/" extends="struts-default"> 
    <!-- ... --> 
</package> 

BTW la meilleure façon d'éviter les fichiers énormes struts.xml utilise le Convention plugin.
Envisager de l'utiliser au moins pour les prochains projets.

+0

oh mon Dieu. Cela fonctionne parfaitement bien maintenant après avoir suivi vos suggestions. J'ai changé le nom de l'un des paquets et cela fonctionne très bien. Merci beaucoup –