У меня проблемы с th: если весной

Итак, я начал изучать java + Spring, и у меня проблема с "th: if". Когда я хочу напечатать на localhost: 8080 / car YearOfProduction = 2000, и я использую th: info = "$ {info} == '2000'" в моих шаблонах ничего не происходит, но когда я удаляю th: info = "$ {info} == '2000'", все работает нормально, это означает, что когда я пишу для Пример 1999 года в YearOfProduction мое приложение печатает на локальном хосте год, который я написал.

Мой класс контроллера:

@Controller public class CarCotnroller {

@RequestMapping(value = "/car", method = RequestMethod.POST)

public String carPost(@ModelAttribute("carForm") CarForm form, Model model) {

    model.addAttribute("info", "Rok produkcji samochodu to: " + form.getYearOfProduction());

    return "cars";
}


@RequestMapping(value = "/car", method = RequestMethod.GET)
public String carPost(Model model) {
    model.addAttribute("carForm", new CarForm());
    return "car";
}

}

Мой класс формы:

public class CarForm {

private String carname;
private String yearOfProduction;

public CarForm(String carname, String yearOfProduction) {
    this.carname = carname;
    this.yearOfProduction = yearOfProduction;
}

public CarForm() {

}

public String getCarname() {
    return carname;
}

public void setCarname(String carname) {
    this.carname = carname;
}

public String getYearOfProduction() {
    return yearOfProduction;
}

public void setYearOfProduction(String yearOfProduction) {
    this.yearOfProduction = yearOfProduction;
}

}

и мои шаблоны:

<!DOCTYPE html>
<html lang = "en" xmlns:th = "http://www.thymeleaf.org/">
<head>

    <title>Title</title>
</head>
<body>

<center><span th:if = "${info} == '2000'" th:text = "${info}"></span></center>
</br></br>
<form th:action = "@{/car}" method = "post" th:object = "${carForm}">
    Car name: <input type = "text" th:field = "*{carname}">
    <p></p>
    year of production: <input type = "text" th:field = "*{yearOfProduction}">
    <p></p>

    <input type = "submit" value = "send">
</form>


</body>
</html>

${info} - это String или int? Что будет, если попробовать th:if = "${info == 2000}"

Metroids 11.04.2018 17:31

Ничего не произошло. $ {info} - строка

Pablito 11.04.2018 17:34

Вы хотите, чтобы он печатал только ${info}, если это 2000? Почему бы вам просто не написать <span>2000</span>? Я не понимаю предназначение th:if.

Metroids 11.04.2018 17:37

Когда я изменил $ {info} на int и попробовал другие сравнения, например: th: if = "$ {info gt 2000}" и th: if = "$ {info & gt; 2000}", я получаю такие ошибки: "Exception Assessment Выражение SpringEL: "info gt 2000" (шаблон: "car" - строка 9, столбец 15) "и" Исключение, оценивающее выражение SpringEL: "info> 2000" (шаблон: "car" - строка 9, столбец 15) ".. ...

Pablito 11.04.2018 17:39

потому что я изучаю это и хочу знать, что делаю не так :)

Pablito 11.04.2018 17:42
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
6
64
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вы можете использовать утилиты Струны:

<span th:if = "${#strings.equals(info, '2000')}" th:text = "${info}"></span>

ваш код выглядит нормально, но он все еще не работает, и я не знаю почему ..; /

Pablito 11.04.2018 18:38

Если вам нужно только распечатать любую информацию, основанную на каком-либо условии, почему бы вам не попробовать что-то вроде:

<span th:text = "${info} == '2000' ? 'something' : 'something else'"></span>

Или, если вам действительно нужен тег if, то что-то вроде:

<span th:if = "${info} == '2000'>Something</span><span th:if = "not ${info} == '2000'">Something else</span>

Возможно, вы захотите быстро прочитать Компараторы Thymeleaf и равенство

ваш код тоже выглядит нормально, но он все равно не работает, и я не знаю почему ..; /

Pablito 11.04.2018 18:39
Ответ принят как подходящий

Я до сих пор не знаю, почему это не работает, но я сделал это по-другому, написав в CarController:

model.addAttribute("info", form.getYearOfProduction() == 2000 ? form.getYearOfProduction(): "Error"); 

и это отлично работает. Спасибо тебе за все :)

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