Как я могу получить свой вклад от одной страницы к другой, используя Spring и тимелист? - PullRequest
0 голосов
/ 14 апреля 2020

почти не знаком с Spring Boot и никогда не использовал Thymeleaf, поэтому у меня возникла пара проблем, я работаю поверх уже созданного (Источник: https://github.com/springframeworkguru) приложения из-за временных ограничений так как я должен быстро выполнить школьный проект. Я пытаюсь получить местоположение от пользователя, а затем сделать вызов API качества воздуха и получить свойства воздуха этого указанного c местоположения.

В данный момент я создаю Loader, который создает экземпляр местоположения, чтобы я мог проверить, работают ли мои модели и сервисы.

Мой индекс. html

<div class="container">
    <!--/*/ <th:block th:include="fragments/header :: header"></th:block> /*/-->
    <div class="container" style="margin-top: 85px; margin-bottom: 20px; background: #f2f2f2;border-radius: 20px; padding: 1.5%;">
        <h1>Air Quality</h1>
        <h5>Check the air quality of a selected location</h5>
        <form style="margin-top: 30px;" th:action="@{/location}" method="post"> <!-- th:object="${location}"  ??? -->
            <div class="form-group">
                <label>Location</label>
                <input type="text" class="form-control" id="location" placeholder="Enter location"> <!-- th:field="*{location.name}" -->
            </div>
            <button type="submit" class="btn btn-primary">Get Air quality info</button>
        </form>
    </div>
</div>

Это веб-страница, на которой я собираюсь иметь качество воздуха указанного местоположения c, но, поскольку я загрузил его с большим количеством данных, я решил перечислить все из них (в настоящее время источник, созданный на входе, не отображается)

<div class="container">
    <!--/*/ <th:block th:include="fragments/header :: header"></th:block> /*/-->
    <div th:if="${not #lists.isEmpty(locations)}">
        <h2>Location List</h2>
        <table class="table table-striped">
            <tr>
                <th>Id</th>
                <th>Name</th>
                <th>Aqi</th>
                <th>pm10</th>
                <th>View</th>
            </tr>
            <tr th:each="location : ${locations}">
                <td th:text="${location.id}"><a href="/location/${location.id}">Id</a></td>
                <td th:text="${location.name}">name</td>
                <td th:text="${location.aqi}">aqi</td>
                <td th:text="${location.pm10}">pm10</td>

...

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

    @RequestMapping(value = "/products", method = RequestMethod.GET)
    public String list(Model model) throws URISyntaxException, IOException {
        model.addAttribute("locations", locationService.listAllLocations());
        System.out.println("TESTING || TESTING");

        //Inicializada a variável da nova localidade
        Location location = new Location();

        String TOKEN = "/?token=HIDDEN";
        String url = "https://api.waqi.info/feed/";
        String name_teste = "lisbon";

        URLConnection connection = new URL(url + name_teste + TOKEN).openConnection();
        connection.setRequestProperty("Accept-Charset", "UTF-8");
        InputStream response = connection.getInputStream();

        try (Scanner scanner = new Scanner(response)) {
            String responseBody = scanner.useDelimiter("\\A").next();
            System.out.println(responseBody);
            System.out.println(responseBody.getClass().getName());

            JsonParser parser = new JsonParser();
            Gson gson = new GsonBuilder().setPrettyPrinting().create();

          ...
          more info extraction here
          ...

            } catch (JSONException err) {
                System.out.println("Error" + err.toString());
            }
        }catch (Exception e){
            System.out.println("Error" + e);
        }
        return "products";
    }

...