#java #spring-boot
Вопрос:
Я пытаюсь понять, как работает компонент с областью действия сеанса, и попробовал пример отсюда.
HelloMessageGenerator.java
public class HelloMessageGenerator {
private String message;
public HelloMessageGenerator() {
this.message = message;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
HelloMessageBean.java
@Configuration
public class HelloMessageBean {
@Bean
@Scope(value = WebApplicationContext.SCOPE_SESSION, proxyMode = ScopedProxyMode.TARGET_CLASS)
public HelloMessageGenerator requestScopedBean() {
System.out.println("bean created");
return new HelloMessageGenerator();
}
}
HelloMessageController.java
@Controller
public class HelloMessageController {
@Resource(name = "sessionScopedBean")
HelloMessageGenerator sessionScopedBean;
@RequestMapping("/scopes/session")
public String getSessionScopeMessage(final Model model) {
model.addAttribute("previousMessage", sessionScopedBean.getMessage());
sessionScopedBean.setMessage("Good afternoon!");
model.addAttribute("currentMessage", sessionScopedBean.getMessage());
return "scopesExample";
}
}
Когда я иду в http://localhost:8080/scopes/session Я получаю сообщение об ошибке.
scopesExample.html
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="https://www.thymeleaf.org"
xmlns:sec="https://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
<head>
<title>Hello World!</title>
</head>
<body>
<p th:text="${previousMessage}">previous message</p>
<p th:text="${currentMessage}">current message</p>
</body>
</html>
Ошибка, которую я получаю, выглядит так, как будто отображения не существовало бы:
This application has no explicit mapping for /error, so you are seeing this as a fallback. There was an unexpected error (type=Not Found, status=404).
Комментарии:
1. Пожалуйста, опубликуйте, какую ошибку вы получаете ?
2. Я добавил ошибку в исходный запрос @NiceBooks
3. Что такое код ошибки http 404, 403, 503… ? В случае ошибок 5xx (внутренние ошибки сервера), пожалуйста, опубликуйте всю трассировку стека.
4. Это 404-й. Произошла неожиданная ошибка (тип=Не найден, статус=404). Спасибо @NiceBooks за то, что изучили это.
Ответ №1:
Мне не хватало зависимости от тимелифа в пом.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
Вот почему я получал 404 при переходе на локальный хост:8080/области/запрос
После добавления зависимости thymeleaf область действия компонента работала должным образом. Для компонента области сеанса компонент создается только один раз за сеанс или после заданного тайм-аута сеанса. Для компонента области запроса он создается для каждого запроса (т. Е. каждый раз, когда один попадает в конечную точку).