У меня есть MVC контроллер Spring с обработчиками, как так:Spring MVC контроллер перенаправление к некоторому URL после авторизации
@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";
}
Форма в login.html страницы сообщений для учетной записи/логин (тот же URL). Я хотел бы, чтобы после аутентификации я перенаправлял пользователя на главную страницу своего приложения, так что он видит www.mywebappexample.com
в адресной строке вместо www.mywebappexample.com/account/login
. Когда я возвращаю строку из метода входа, она отображает правильный html, но у меня нет URL-адреса, который я хочу показать. Как я могу перенаправить?
Редактировать: Мне пришлось префикс моего контроллера вернуть строку с redirect:
. Это работает, если у вас есть средство определения вида, которое подклассы UrlBasedViewResolver UrlBasedViewResolver. Thymeleaf's view resolver этого не делает, но имеет поведение ->ThymeleafViewResolver. Вот мой сервлет-context.xml (я использую 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>
Это не делает это, но я предполагаю, что это потому, что я использую Thymeleaf как мой ViewResolver. Не перенаправляет ли какой-нибудь другой Resolver? –
Не использовали этот. Попробуйте 'org.springframework.web.servlet.view.InternalResourceViewResolver' – Reimeus
Немного поиграть с этим, и это сработало. Проверьте мои изменения, если они заинтересованы. –