@PostMapping не работает: ни BindingResult, ни простой целевой объект для имени компонента 'XXX' не доступны в качестве атрибута запроса - PullRequest
0 голосов
/ 12 марта 2020

Я новичок в thymeleaf и Spring-Boot, я следовал этому учебнику , чтобы создать форму отправки. Я сделал то же самое, но получаю следующее исключение:

java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'conjugation' available as request attribute

Может кто-нибудь сказать мне, что не так в моем коде, зная, что это мой Conjugation класс

public class Conjugation {
    private String v;

    public String getV() {
        return this.v;
    }

    public void setV(String v) {
        this.verb = v;
    }

}

Это то, что я использовал в своем контроллере

//The Controller
@GetMapping("/conjugate")
  public String vForm(Model model) {
    model.addAttribute("conjugate", new Conjugation());
    return "conjugate";
  }

@PostMapping("/conjugate")
  public String vbSubmit(@ModelAttribute Conjugation conjugate) {
    System.out.println("-->"+conjugate.getV());
    return "index";
  }

И это мой index.html файл:

<form action="#" th:action="@{/conjugate}" th:object="${conjugation}" method="post">
    <div class="cell">
        V
    </div>
    <div class="cell">
        <input class="cell" type="text"  th:field="*{v}" /> 
    </div>
    <div class="cell">
        <input type="submit" value="Submit" />
    </div>

Ответы [ 2 ]

2 голосов
/ 12 марта 2020

Вы добавляете атрибут с именем conjugate:

model.addAttribute("conjugate", new Conjugation());

, но в вашем файле html вы говорите conjugation

th:object="${conjugation}"

Это будет работать, если вы замените свой ток model.addAttribute, с:

model.addAttribute("conjugation", new Conjugation());
0 голосов
/ 12 марта 2020

th:value заменить на th:field

и

длина вашей переменной v должна быть больше 3. Я не знаю, почему это. Но я столкнулся с такой ситуацией, которая называет переменную.

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