2010-11-30 23 views
1

Dans mon projet printemps mvc 3.0, j'ai un répertoire plein de fichiers .jsp (~ 150) que je veux mettre sous le contrôle du printemps.spring mvc 3.0: mettre un tas de fichiers .jsp sous le contrôle du ressort

Jusqu'à maintenant, ils étaient invoqués directement par web.xml, sans passer par le servlet de ressort. À partir de maintenant, je veux les mettre tous sous le contrôle du printemps pour profiter des friandises du printemps et rendre mon projet plus uniforme.

Bien sûr, je ne veux pas écrire un seul contrôleur pour chaque fichier .jsp. Comment puis-je faire ceci? Les JSP ne doivent pas inclure de code nécessitant une injection de dépendance.

+0

Je ne fais pas Spring, mais pourquoi ne pas simplement ajouter un autre 'modèle d'url' à la servlet Spring qui couvre le dossier particulier rempli de JSP? Par exemple. '/folderfullofjsps/*'. Est-ce que ça ne marche pas pour le printemps? – BalusC

Répondre

1

Dans le cas d'une seule page JSP, vous pouvez utiliser <mvc:view-controller>.

Lorsque vous avez plusieurs pages, vous pouvez écrire un fourre-tout contrôleur comme ceci:

@RequestMapping("/folder/{name}.jsp") 
public ModelAndView catchAll(@PathVariable String viewName) { 
    return new ModelAndView("legacy/" + viewName); 
} 

Cependant, il peut entrer en conflit avec servlet de traitement JSP. Si c'est le cas, vous devez appliquer un filtre de réécriture d'URL.

0

Alors ne le fais pas.

Si vous devez vraiment, vous pouvez utiliser

<%! 
    public void init() { 
     ApplicationContextUtils.getRequiredWebApplicationContext(
      getServletContext()).getAutowireCapableBeanFactory() 
      .autowireBean(this); 
    } 
%> 

Mais ce qui est extrêmement laid.