J'ai un contrôleur Spring MVC avec des gestionnaires comme ceci:contrôleur Spring MVC rediriger vers une URL après la connexion
@RequestMapping(value = "/account/login", method = RequestMethod.GET)
public String login() {
return "login";
}
@RequestMapping(value = "/account/login", method = RequestMethod.POST, params = "login")
public String login(@RequestParam(value = "username") String username,
@RequestParam(value = "password") String password) {
// do authentication
return "home";
}
La forme dans les pages POSTs login.html pour compte/login (la même URL). Je voudrais que, après l'authentification, je redirige l'utilisateur vers la page d'accueil de mon application, de sorte qu'il voit www.mywebappexample.com
dans la barre d'adresse au lieu de www.mywebappexample.com/account/login
. Lorsque je renvoie la chaîne à partir de la méthode de connexion, elle affiche le code html approprié, mais je n'ai pas l'URL que je veux afficher. Comment puis-je rediriger?
Editer: Je devais préfixer ma chaîne de retour de contrôleur avec redirect:
. Cela fonctionne si vous avez un résolveur d'affichage qui sous-classe UrlBasedViewResolver UrlBasedViewResolver. Le résolveur de vue de Thymeleaf ne fait pas cela mais il a le comportement ->ThymeleafViewResolver. Voici mon servlet-context.xml (j'utilise thymeleaf):
<bean id="templateResolver"
class="org.thymeleaf.templateresolver.ServletContextTemplateResolver">
<property name="prefix" value="/WEB-INF/" />
<property name="suffix" value=".html" />
<property name="templateMode" value="HTML5" />
</bean>
<bean id="templateEngine" class="org.thymeleaf.spring3.SpringTemplateEngine">
<property name="templateResolver" ref="templateResolver" />
</bean>
<bean id = "viewResolver" class="org.thymeleaf.spring3.view.ThymeleafViewResolver">
<property name="templateEngine" ref="templateEngine" />
<property name="order" value = "1"/>
</bean>
Ce ne le fait pas, mais je suppose que c'est parce que je utilise thymeleaf comme mon ViewResolver. Ne pas rediriger besoin d'un autre résolveur? –
N'a pas utilisé celui-là. Essayez 'org.springframework.web.servlet.view.InternalResourceViewResolver' – Reimeus
Un peu de jeu avec ça et ça a marché. Vérifiez mes modifications si vous êtes intéressé. –