Как передать случайное число из класса Java в html-файл

Я пытаюсь узнать больше о структуре Spring с тимелеафом, но сейчас я хочу сгенерировать в одном классе случайное число, а затем перейти к html-файлу, чтобы распечатать его. Я даже делаю это правильно? Итак, у меня есть класс numberController, в котором я генерирую свое случайное число:

public class numberController {
    public int randomSkaicius() {
        Random rand = new Random();
        int skaicius = (int) (Math.random() * 50 + 1);
        return skaicius;
    }
}

И вот мой HTML-код:

<div class = "container">
    <h5>Privaloma informacija</h5>
    <div>
        <form action = "#" th:action = "@{/home}" th:object = "${galerija}" method = "GET">
            <label>Nuotraukos ID: + ${numberController.randomSkaicius}</label>
        </form>
    </div>
</div>

Я не знаком с тимелеафом, но randomSkaicius() — это метод, разве вам не нужно также вызывать этот метод в своем html?

Lino 13.02.2019 16:08

Что именно вы имеете в виду, вызвать?

HenrikasB 13.02.2019 16:10

@HenrikasB вызывает такой метод, как ${numberController.randomSkaicius()}

nullptr 13.02.2019 16:12

О верно. Я пробовал таким образом, все еще не вижу в своем браузере номер

HenrikasB 13.02.2019 16:13

Используете ли вы @Controller и @RequestMapping в своей numberController или любой конфигурации на основе XML для Spring MVC?

Victor Gubin 13.02.2019 16:13

На самом деле я не использую @Controller в своем numberController. Просто должен упомянуть, что я новичок в этой структуре и новых технологиях.

HenrikasB 13.02.2019 16:15

Смотрите это: thymeleaf.org/doc/articles/springmvcaccessdata.html

bkis 13.02.2019 16:24

Лучше сначала начать с изучения Весенний МВК. т.е. понимать шаблон модель-представление-контроллер, т. е. вы случайный Скейциус должен быть int в вашей модели. А также numberController должен быть «классом бизнес-логики», то есть @Component, который используется вашим контроллером, и ваш контроллер должен передать «randomSkaicius» в модель, после чего вы можете использовать его в своем представлении тимелеафа.

Victor Gubin 13.02.2019 16:31
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
8
1 203
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Прежде всего, вы должны убедиться, что ваш шаблон Thymeleaf находится в правильном месте (src/основной/ресурсы/шаблоны) и запомнить его имя (например, моя страница.html).

Следующим шагом является то, что вы должны правильно сообщить Spring, что NumberController на самом деле является контроллером, используя аннотацию @Controller:

@Controller
public class NumberController {
    public int randomSkaicius() {
        Random rand = new Random();
        int skaicius = (int) (Math.random() * 50 + 1);
        return skaicius;
    }
}

После этого вы должны указать Spring, какой URL должен быть разрешен для конкретного метода контроллера, который возвращает модель + представление. Вы можете сделать это, используя аннотацию @GetMapping, например:

@Controller
public class NumberController {
    @GetMapping("/my/page")
    public ModelAndView getMyPage() {
        // TODO: Implementation
    }

    public int randomSkaicius() {
        Random rand = new Random();
        int skaicius = (int) (Math.random() * 50 + 1);
        return skaicius;
    }
}

В этом случае мы сообщаем Spring, что как только кто-то запрашивает http://локальный:8080/моя/страница, срабатывает метод getMyPage().

В этом методе мы должны вернуть объект ModelAndView, который определяет несколько вещей:

  • Имя представления, в вашем случае имя шаблона Thymeleaf, что означает my-page (вы должны удалить часть-расширение).
  • Название модели, которое вы можете свободно выбрать, например randomSkaicius.
  • Фактическое значение для модели, которое возвращает randomSkaicius().

Например:

@Controller
public class NumberController {
    @GetMapping("/my/page")
    public ModelAndView getMyPage() {
        return new ModelAndView("my-page", "randomSkaicius", randomSkaicius());
    }

    public int randomSkaicius() {
        Random rand = new Random();
        int skaicius = (int) (Math.random() * 50 + 1);
        return skaicius;
    }
}

Теперь, когда вы определили это, вы должны вернуться к своему шаблону Thymeleaf, и везде, где вы хотите использовать эту модель, вы должны правильно ссылаться на нее. Мы назвали его "randomSkaicius" в контроллере, поэтому мы можем поместить что-то вроде этого в наш шаблон Thymeleaf:

<span th:text = "${randomSkaicius}"></span>

Мы используем th:text, чтобы сказать Thymeleaf разрешить эту часть как внутренний текст этого элемента. Затем мы использовали ${randomSkaicius} для ссылки на модель, которую мы определили ранее в контроллере.

Вау, какое объяснение.. Спасибо.

HenrikasB 13.02.2019 16:58

Другие вопросы по теме