Лист с весенней загрузкой и тимьяном - PullRequest
0 голосов
/ 30 апреля 2018

Я пытаюсь получить список объектов, которые отправляются на сервер из формы html в качестве параметров для моего списка, затем я перебираю эти записи и затем возвращаю их через springboot th:each. Но это, похоже, не работает вообще. При загрузке форма появляется, но когда я ввожу в нее значение, она возвращает страницу с ошибкой и URL-адрес, однако, поворачивается:

http://localhost:8080/@%7B/%7D?%24%7Bcontent%7D=hello

этот вывод в Eclipse говорит:

Expression "content" is not valid: only variable expressions ${...} or selection expressions *{...} are allowed in Spring field bindings 

Примечание: содержание здесь является свойством значения в моей форме. Мой контроллер выглядит так:

@Controller
public HelloList() {
    this.addUs = new ArrayList <>();
}

@RequestMapping("/")
public String getlist(@RequestParam (required = false) String content, Model model) {
    if (content != null && !content.trim().isEmpty()) {
        this.addUs.add(content);
    }

    model.addAttribute("list",addUs);
    return "index";
}

index.html выглядит так

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Insert title here</title>
</head>
<body>
<div>
    <ul>
        <li th:each="amHere: ${addUs}">
            <span th:text="${amHere}">hello! world</span>
        </li>
    </ul>

    <form action="@{/}" method="GET">
        <input type="text" name="content"/>
        <input type="submit" value="Submit"/>
    </form>
</div>
</body>
</html>

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

Ответы [ 2 ]

0 голосов
/ 06 мая 2018

Оказывается, мне не хватало инициализации моего списка в конструкторе. Я инициализировал список, сначала добавив к нему значение в конструкторе следующим образом.

this.addUs.add("Hello World");

Поскольку @RequestMapping отображается в домашнем пути в моем случае index.html, любой запрос отправляется туда автоматически. рабочий пример

0 голосов
/ 01 мая 2018

action = "@{/}" должно быть th:action="@{/}". Вот почему вы видите странный URL (потому что это кодировка URL @{/}). Thymeleaf оценивает только те выражения, которые начинаются с th:.

Я не уверен насчет другой ошибки. Похоже, что HTML-код, который вы вставили, не совпадает с ошибкой, которую вы получаете.

Если вы urldecode http://localhost:8080/@%7B/%7D?%24%7Bcontent%7D=hello, вы получите http://localhost:8080/@{/}?${content}=hello, что не совпадает с вашей формой.

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