У меня есть следующий код admin.jsp:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Admin page</title>
</head>
<body>
Dear <strong><p th:text="${name}"></p></strong>, Welcome to Admin Page.
<a href="/logout">Logout</a>
</body>
</html>
Код Spring-контроллера следующий:
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String login(@ModelAttribute("userForm") User userForm, Model model) {
try {
securityService.autologin(userForm.getUsername(), userForm.getPassword());
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
model.addAttribute("name",authentication.getName());
if (securityService.isAdmin(userForm.getUsername())) {
return "redirect:/admin";
}
} catch (RestException e) {
model.addAttribute("error", "User with username '"+userForm.getUsername()+"' not found");
}
return "redirect:/index";
}
Код Spring MVC-конфигурации следующий:
@Configuration
@EnableWebMvc
@ComponentScan({ "ru.dev.avtonomki" })
public class WebMVCConfig extends WebMvcConfigurerAdapter implements ApplicationContextAware {
private ApplicationContext applicationContext;
public void setApplicationContext(ApplicationContext applicationContext) {
this.applicationContext = applicationContext;
}
@Bean
public ViewResolver jspViewResolver() {
ThymeleafViewResolver resolver = new ThymeleafViewResolver();
resolver.setTemplateEngine(templateEngine(jspTemplateResolver()));
resolver.setContentType("text/html");
resolver.setCharacterEncoding("UTF-8");
resolver.setOrder(1);
resolver.setViewNames(ArrayUtil.array("*.jsp"));
return resolver;
}
private TemplateEngine templateEngine(ITemplateResolver templateResolver) {
SpringTemplateEngine engine = new SpringTemplateEngine();
engine.addDialect(new LayoutDialect(new GroupingStrategy()));
engine.addDialect(new Java8TimeDialect());
engine.setTemplateResolver(templateResolver);
engine.setTemplateEngineMessageSource(messageSource());
return engine;
}
private ITemplateResolver jspTemplateResolver() {
SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver();
resolver.setApplicationContext(applicationContext);
resolver.setPrefix("classpath:/templates/");
//resolver.setSuffix(".jsp");
resolver.setCacheable(false);
resolver.setTemplateMode(TemplateMode.HTML);
return resolver;
}
@Bean(name = "messageSource")
public ResourceBundleMessageSource messageSource() {
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasename("messages");
return messageSource;
}
@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
LocaleChangeInterceptor localeChangeInterceptor = new LocaleChangeInterceptor();
localeChangeInterceptor.setParamName("lang");
return localeChangeInterceptor;
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(localeChangeInterceptor());
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
}
@Override
public void addFormatters(FormatterRegistry registry) {
registry.addFormatter(new NameFormatter());
}
}
Вопрос состоит в том, почему тэг th:text
не срабатывает? В чем может быть причина этого?
У меня впечатление, что присутствует путаница с .jsp и .html. TemplateResolver ищет файлы с .html (suffix), а ViewResolver смотрит на .jsp (viewNames) - вот они и не сходятся. То есть система вам разрешает путь к view на файл с расширением .jsp, но он не определяется как шаблон и не проходит обработку Thymeleaf. Непонятна необходимость использовать JSP при том, что Thymeleaf как раз на HTML5 рассчитан в первую очередь.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Не могу найти информацию как можно в hibernate работать с двумя источниками данныхС двумя разными базами данных
Помогите подробно разобрать этот код - я не понимаю здесь в метод вложен метод?