Я пытаюсь узнать больше о структуре 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>
Что именно вы имеете в виду, вызвать?
@HenrikasB вызывает такой метод, как ${numberController.randomSkaicius()}
О верно. Я пробовал таким образом, все еще не вижу в своем браузере номер
Используете ли вы @Controller и @RequestMapping в своей numberController или любой конфигурации на основе XML для Spring MVC?
На самом деле я не использую @Controller в своем numberController. Просто должен упомянуть, что я новичок в этой структуре и новых технологиях.
Смотрите это: thymeleaf.org/doc/articles/springmvcaccessdata.html
Лучше сначала начать с изучения Весенний МВК. т.е. понимать шаблон модель-представление-контроллер, т. е. вы случайный Скейциус должен быть int в вашей модели. А также numberController должен быть «классом бизнес-логики», то есть @Component, который используется вашим контроллером, и ваш контроллер должен передать «randomSkaicius» в модель, после чего вы можете использовать его в своем представлении тимелеафа.




Прежде всего, вы должны убедиться, что ваш шаблон 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, который определяет несколько вещей:
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} для ссылки на модель, которую мы определили ранее в контроллере.
Вау, какое объяснение.. Спасибо.
Я не знаком с тимелеафом, но
randomSkaicius()— это метод, разве вам не нужно также вызывать этот метод в своем html?