Как весенняя загрузка разрешает имена представлений, если метод сопоставления запросов возвращает список? - PullRequest
0 голосов
/ 19 октября 2018

Я изучаю разрешение просмотра в приложениях с весенней загрузкой.Для экспериментов я создал контроллер в приложении весенней загрузки, как показано ниже:

@Controller
@RequestMapping("/rooms")
public class RoomController {

    private static List<Room> roomList = new ArrayList<>();

    static {
        for (int i = 1; i <= 10; i++) {
            roomList.add(new Room("Room " + i, "Name " + i, "Q"));
        }
    }

    @GetMapping
    public List<Room> getRooms(Model model) {
        model.addAttribute("rooms", roomList);

        // View name is rooms.html
        // Returning a room list object with a different name
        // Also, no other custom view resolvers are registered
        return roomList;
    }
}

Кроме того, это мой файл rooms.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8" />
<title>Hotel | Rooms</title>
<link th:href="@{/css/style.css}" rel="stylesheet" />
</head>
<body>
    <table border="1">
        <tr>
            <th>Room Number</th>
            <th>Name</th>
            <th>Bed Info</th>
        </tr>

        <tr th:each="room:${rooms}">
            <td th:text="${room.number}"></td>
            <td th:text="${room.name}"></td>
            <td th:text="${room.bedInfo}"></td>
        </tr>
    </table>
</body>
</html>

Когда я запускаю приложение и нажимаюhttps://localhost:8000/rooms, Я по-прежнему вижу правильное представление комнаты rooms.html.

Насколько я понимаю, он не должен был разрешить представление "rooms.html", поскольку я не возвращаюсьстрока имени представления или объекты Model или ModelAndView.

Это ожидаемое поведение или я что-то упустил?

1 Ответ

0 голосов
/ 19 октября 2018

Spring достаточно умен, чтобы вычислить имя представления по URI.

Существует класс DefaultRequestToViewNameTranslator, который выполняет эту работу.Он знает, как создать имя представления, какой префикс, суффикс использовать.

RequestToViewNameTranslator, который просто преобразует URI входящего запроса в имя представления.[...]

Преобразование по умолчанию просто удаляет начальные и конечные слэши, а также расширение файла URI и возвращает результат в виде имени представления с настроенным префиксом и суффиксом, добавленным в зависимости от ситуации.

Документация DefaultRequestToViewNameTranslator

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...