Ошибка во время выполнения процессора 'org.thymeleaf.spring5.processor.SpringInputGeneralFieldTagProcessor' - PullRequest
0 голосов
/ 12 декабря 2018

Я пытаюсь создать простую вкладку поиска с тимилифом и загрузкой Spring.Вот мои коды и HTML-файлы.

scCountry.html

  <form class="form-inline" action="#"  th:action="@{/search}" modelAttribute="sInput" th:object="${sInput}" method="post">
                <input class="form-control mr-sm-2" type="text" placeholder="Search" th:field="*{keyWord}">
                <input type="submit" value="Submit" />
      <!--      <button class="btn btn-success" type="Submit" value="Submit">Search</button> -->
            </form>

Controller.class

 @GetMapping(value="/search")
    public String SearchForm(Model model) {

         SearchInput sInput = new SearchInput();
        model.addAttribute("sInput",sInput);

        return "scCountry";
    }

    @PostMapping(value="/search")
    public String SearchResult(@ModelAttribute("sInput") SearchInput sInput, BindingResult bindingResult, Model model) {
        if (bindingResult.hasErrors()) {
            return "scCountry";
        }

        SearchVO searchVO = null;
        try {
            searchVO = webServices.searchAll(sInput.getKeyWord());
        } catch (TwitterException e) {
            e.printStackTrace();
        }

        model.addAttribute("searchVO",searchVO);

        return "scSearch";
    }

Модальный класс

public class SearchInput {

    private String keyWord;
    public String getKeyWord() {
        return keyWord;
    }
    public void setKeyWord(String keyWord) {
        this.keyWord = keyWord;
    }
    public SearchInput() {
    }
    public SearchInput(String keyWord) {
        this.keyWord = keyWord;
    }
}

Журнал

         :[Ljava.lang.Byte;@3929bes             :[Ljava.lang.Byte;@1995b82018-12-13 20:45:53.989 ERROR 6400 --- [nio-8080-exec-1] org.thymeleaf.TemplateEngine             : [THYMELEAF][http-nio-8080-exec-1] Exception processing template "scCountry": Error during execution of processor 'org.thymeleaf.spring5.processor.SpringInputGeneralFieldTagProcessor' (template: "scCountry" - line 31, col 86)

org.thymeleaf.exceptions.TemplateProcessingException: Ошибка при выполнении процессора 'org.thymeleaf.spring5.processor.SpringInputGeneralFieldTagProcessor' (template: "scCountry" - строка 31, столбец 86) в org.thymele.processor.element.AbstractAttributeTagProcessor.doProcess (AbstractAttributeTagProcessor.java:117) ~ [thymeleaf-3.0.9.RELEASE.jar: 3.0.9.RELEASE] в org.thymeleaf.processor.element.AbstractElementTagProcess ((95) ~ [thymeleaf-3.0.9.RELEASE.jar: 3.0.9.RELEASE] на org.thymeleaf.util.ProcessorConfigurationUtils $ ElementTagProcessorWrapper.process (ProcessorConfigurationUtils.java:633) ~ [thymeleaf-3.0.9.RELEASE.jar: 3.0.9.RELEASE] at org.thymeleaf.engine.ProcessorTemplateHandler.handleStandaloneElement (ProcessorTemplateHandler.java:918) ~ [thymeleaf-3.0.9.RELEASE.jar: 3.0.9.RELEASE] в org.thymeleaf.engine.StandaloneElementTag.beHandled (StandaloneElementTag.java:228) ~ [thymeleaf-3.0.9.RELEASE.jar: 3.0.9.RELEASE] в org.thymeleaf.engine.TemplateModel.process (java: 136) ~ [thymeleaf-3.0.9.RELEASE.jar: 3.0.9.RELEASE] в org.thymeleaf.engine.TemplateManager.parseAndProcess (TemplateManager.java:661) ~ [thymeleaf-3.0.9.RELEASE.jar: 3.0.9.RELEASE] в org.thymeleaf.TemplateEngine.process (TemplateEngine.java:1098) [thymeleaf-3.0.9.RELEASE.jar: 3.0.9.RELEASE] в org.thymeleaf.TemplateEngine.process (TemplateEngine.java: 1072) [thymeleaf-3.0.9.RELEASE.jar: 3.0.9.RELEASE] в org.thymeleaf.spring5.view.ThymeleafView.renderFragment (ThymeleafView.java:354) [thymeleaf-spring5-3.0.9.RELEASE.jar: 3.0.9.RELEASE] в org.apache.coyote.http11.Http11Processor.service (Http11Processor.java:803) [tomcat-embed-core-8.5.31.jar: 8.5.31] в org.apache.coyote.AbstractProcessorLight.process (AbstractProcessorLight.java:66) [tomcat-embed-core-8.5.31.jar: 8.5.31] в org.apache.coyote.AbstractПротокол $ ConnectionHandler.process (AbstractProtocol.java:790) [tomcat-embed-core-8.5.31.jar: 8.5.31] в org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun (NioEndpoint.java:1468) [tomcat-embed-core-8.5.31.jar: 8.5.31] at org.apache.tomcat.util.net.SocketProcessorBase.run (SocketProcessorBase.java:49) [tomcat-embed-core-8.5.31.jar: 8.5.31] в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142) [na: 1.8.0_121] в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:617)[na: 1.8.0_121] в org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run (TaskThread.java:61) [tomcat-embed-core-8.5.31.jar: 8.5.31] в java.lang.Thread.run (Thread.java:745) [na: 1.8.0_121] Вызвано: java.lang.IllegalStateException: ни BindingResult, ни простой целевой объект для имени компонента 'sInput' не доступны в качестве атрибута запроса на org.springframework.web.servlet.support.BindStatus. (BindStatus.java:153) ~ [spring-webmvc-5.0.7.RELEASE.jar: 5.0.7.RELEASE] в org.springframework.web.servlet.support.RequestContext.getBindStatus (RequestContext.java:903) ~ [spring-webmvc-5.0.7.RELEASE.jar: 5.0.7.RELEASE] в org.thymeleaf.spring5.context.webmvc.SquingWeb.getBindStatus (SpringWebMvcThymeleafRequestContext.java:227) ~ [thymeleaf-spring5-3.0.9.RELEASE.jar: 3.0.9.RELEASE] в org.thymeleaf.spring5.util.FieldUtils.getBindStatusFromParsedUj [(Field_5:30) EXjressionthymeleaf-spring5-3.0.9.RELEASE.jar: 3.0.9.RELEASE] at org.thymeleaf.spring5.util.FieldUtils.getBindStatus (FieldUtils.java:252) ~ [thymeleaf-spring5-3.0.9.RELEASE.jar: 3.0.9.RELEASE] at org.thymeleaf.spring5.util.FieldUtils.getBindStatus (FieldUtils.java:226) ~ [thymeleaf-spring5-3.0.9.RELEASE.jar: 3.0.9.RELEASE]в org.thymeleaf.spring5.processor.AbstractSpringFieldTagProcessor.doProcess (AbstractSpringFieldTagProcessor.java:174) ~ [thymeleaf-spring5-3.0.9.RELEASE.jar: 3.0.9.RELEASE] в org.thymelelement. Processor.TeOR.doProcess (AbstractAttributeTagProcessor.java:74) ~ [thymeleaf-3.0.9.RELEASE.jar: 3.0.9.RELEASE] ... пропущено 56 общих кадров

2018-12-13 20: 45: 54.002

ОШИБКА 6400 --- [nio-8080-exec-1] oaccC [. [. [/]. [DispatcherServlet]: Servlet.service () для сервлета [dispatcherServlet] в контексте с исключением пути [][Ошибка обработки запроса;вложенным исключением является org.thymeleaf.exceptions.TemplateProcessingException: ошибка при выполнении процессора 'org.thymeleaf.spring5.processor.SpringInputGeneralFieldTagProcessor' (шаблон: "scCountry" - строка 31, столбец 86)] с коренной причиной java.lang.IllegalStateНи BindingResult, ни простой целевой объект для имени компонента 'sInput' не доступны в качестве атрибута запроса на org.springframework.web.servlet.support.BindStatus.

(BindStatus.java:153) ~ [spring-webmvc-5.0.7.RELEASE.jar: 5.0.7.RELEASE] в org.springframework.web.servlet.support.RequestContext.getBindStatus (RequestContext.java:903) ~ [spring-webmvc-5.0.7.RELEASE.jar: 5.0.7,.util.FieldUtils.getBindStatusFromParsedExpression (FieldUtils.java:305) ~ [thymeleaf-spring5-3.0.9.RELEASE.jar: 3.0.9.RELEASE] в организации.thymeleaf.spring5.util.FieldUtils.getBindStatus (FieldUtils.java:252) ~ [thymeleaf-spring5-3.0.9.RELEASE.jar: 3.0.9.RELEASE] в org.thymeleaf.spring5.util.FieldUtils.getBindStatus (FieldUtils.java:226) ~ [thymeleaf-spring5-3.0.9.RELEASE.jar: 3.0.9.RELEASE] в org.thymeleaf.spring5.processor.AbstractSpringFieldTagProcessor.doProcess (AbstractSpringFieldTagProcessor.java:17af) -5 весна-3.0.9.RELEASE.jar: 3.0.9.RELEASE] в org.thymeleaf.processor.element.AbstractAttributeTagProcessor.doProcess (AbstractAttributeTagProcessor.java:74) ~ [thymeleaf-3.0.9.RELEASE.jar: 3.0.9.RELEASE] at org.thymeleaf.processor.element.AbstractElementTagProcessor.process (AbstractElementTagProcessor.java:95) ~ [thymeleaf-3.0.9.RELEASE.jar: 3.0.9.RELEASE] в org.thymeleaf.util.Processorprocess (ProcessorConfigurationUtils.java:633) ~ [thymeleaf-3.0.9.RELEASE.jar: 3.0.9.RELEASE] в org.thymeleaf.engine.ProcessorTemplateHandler.handleStandaloneElement (ProcessorTemplateHandle)r.java:918) ~ [thymeleaf-3.0.9.RELEASE.jar: 3.0.9.RELEASE] в org.thymeleaf.engine.StandaloneElementTag.beHandled (StandaloneElementTag.java:228) ~ [thymeleaf-3.0.9.RELEASE.jar: 3.0.9.RELEASE] в org.thymeleaf.engine.TemplateModel.process (TemplateModel.java:136) ~ [thymeleaf-3.0.9.RELEASE.jar: 3.0.9.RELEASE] в org.thymeleaf.engine.TemplateManager.parseAndProcess (TemplateManager.java:661) ~ [thymeleaf-3.0.9.RELEASE.jar: 3.0.9.RELEASE]

...

Я получаю сообщение об ошибке: ни BindingResult, ни простой целевой объектдля имени компонента 'sInput', доступного в качестве атрибута запроса

Я попробовал решения, приведенные ниже, на которые дан ответ в этой платформе:

Проверка HTML-формы с использованием тимелина, не работающая пружинная загрузка

Страница регистрации Thymeleaf - Ошибка во время выполнения процессора 'org.thymeleaf.spring4.processor.attr.SpringInputGeneralFieldAttrProcessor'

Spring Thymeleaf TemplateExcessingException в SpringInputGeneralFieldessor

с использованием функции поиска в тимилфиле с параметрами запроса

Если я использую форму, как показано ниже, она работает.

<form class="form-inline"   action="/search" method="post">
                <input class="form-control mr-sm-2" type="text"  id="keyWord" name="keyWord" value=""  placeholder="Search" >
                <input type="submit" value="Submit" />
      <!--      <button class="btn btn-success" type="Submit" value="Submit">Search</button> -->
            </form>

Но мне интересно, чего мне не хватает на два дня?

Может ли кто-нибудь мне помочь?

Я хочу знать, почему "th: object =" $ {sInput} "в scCountry.html не выбирает объект в модели, который я поместил в модель с тем же именем?

1 Ответ

0 голосов
/ 13 декабря 2018
th:field="*{sInput.keyWord}"

должно быть

th:field="*{keyWord}"

При использовании выражений *{...} предполагается th:object.

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