2009-02-24 5 views
-1

Je tente de scinder le fichier ApplicationContext dans Spring.Erreur lors de la division du fichier de contexte d'application au printemps

Par ex. le fichier est testproject-servlet.xml ayant toutes les entrées. Maintenant, je veux partager ce fichier unique en plusieurs fichiers en fonction des groupes logiques comme: groupe1-services.xml, group2-services.xml

J'ai créé les entrées suivantes dans web.xml:

<servlet> 
    <servlet-name>testproject</servlet-name> 
    <servlet-class> 
     org.springframework.web.servlet.DispatcherServlet 
    </servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value> 
      /WEB-INF/group1-services.xml, /WEB-INF/group2-services.xml 
     </param-value> 
    </init-param>  
    <load-on-startup>1</load-on-startup> 
</servlet> 

J'utilise SimpleUrlHandlerMapping comme:

<bean id="simpleUrlMapping"class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
    <property name="order" value="0"/> 
    <property name="mappings"> 
    <props> 
     <prop key="/register.htm">RegisterController</prop>    <prop key="/payroll_services.htm">PayrollServicesController</prop> 
    </props> 
    </property> 
</bean> 

J'ai aussi le contrôleur défini comme:

<bean id="PayrollServicesController" class="com.triforce.b2bseek.businessservices.controller.PayrollServicesController"> 
     <property name="facadeLookup" ref="FacadeLookup"/> 
     .. 
     .. 
     </property> 
</bean> 

Le problème est que j'ai divisé le fichier ApplicationContext "testproject-servlet.xml" en deux fichiers différents et j'ai gardé les entrées ci-dessus dans "group1-services.xml". Est-ce bien? Je veux regrouper les choses logiquement en fonction de leur utilisation dans les fichiers .xml séparés.

Mais je reçois l'erreur suivante lorsque je tente d'accéder à une page dans l'application:

org.springframework.web.servlet.DispatcherServlet noHandlerFound 
WARNING: No mapping for [/TestProject/payroll_services.htm] in DispatcherServlet with name 'testproject' 

S'il vous plaît me dire comment le résoudre.

Merci à l'avance!

+0

manquants échantillons de configuration essentiels – iwein

Répondre

0

Je ne pense pas que son problème avec votre contextConfigLocation en tant que telle

Je pense que plus que le répartiteur a besoin de savoir où envoyer payroll_servives.htm, et ne peut pas trouver un gestionnaire approprié de savoir quoi faire avec ce motif.

Voir reference documentation

Avez-vous vraiment *.htm fichiers à correspondre au servlet répartiteur?

Si vous utilisez des contrôleurs à base d'annotations (@Controller), alors vous devez avoir une ligne semblable à:

<context:component-scan base-package="org.springframework.samples.petclinic.web"/> 

Cela installe un gestionnaire à base d'annotation appropriée, que searchs pour les classes/méthodes annotée comme:

@Controller 
public class PayrollController { 
    @RequestMapping("payroll_services.htm") 
    public ModelAndView payrollServices() { 
     .... 
    } 
} 

Sinon, si vous utilisez handlers/contrôleurs traditionnels, vous devez définir ce en utilisant XML. Le lien de documentation de référence plus tôt dans cette publication mentionne deux tels gestionnaires: SimpleUrlHandlerMapping ou BeanNameUrlHandlerMapping

Peut-être que si vous avez mis à jour votre question avec des extraits de XML de gestionnaire/contrôleur, cela peut aider?

+0

Merci pour votre aide j'ai mis à jour ma question avec m détails de minerai .. s'il vous plaît aider à ce sujet. –

0

Avez-vous ajouté le ContextLoaderListener à votre fichier web.xml?Je ne vois pas:

<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 
+0

Oui, j'ai cette entrée dans web.xml. Pourtant, je reçois l'erreur. Je ne suis pas capable de comprendre pourquoi cela se produit? –

0

Vous devez inclure quelque chose comme ceci dans chacun de vos fichiers:

<context:component-scan base-package="com.example.dao" /> 

S'il manque d'un fichier, il semble que les classes annotées ne sont pas connus dans le contexte de ce fichier.

Vous pouvez revoir le documentation pour plus de détails.

0

Le mappage du gestionnaire de votre DispatcherServlet est incorrect ou vous utilisez une URL incorrecte. Si vous corrigez la mise en page autour de votre configuration SimpleUrlHandlerMapping, je peux vous dire ce qu'il faut changer.

1

Remplacer cette /WEB-INF/group1-services.xml, /WEB-INF/group2-services.xml

avec /WEB-INF/group1-services.xml /WEB -INF/group2-services.xm

Espérons que cela fonctionne ... :)

Questions connexes