J’apprends juste les ficelles de l’annotation fu de Spring 3 et je suis tombé sur l’exception du cauchemar du newb. Apprécierait toute aide.
voici le code jsp de la forme:
....
le code du contrôleur (à ce stade, je teste simplement les eaux, donc je ne dirige pas vers une page, juste en retournant une chaîne vide):
@Controller @SessionAtsortingbutes public class LoginController { @RequestMapping(value = "/login", method = RequestMethod.POST) public Ssortingng login( @ModelAtsortingbute("login") Login login, BindingResult result) { System.out.println(" email entered "+ login.getEmail()+ "\n"); return "test"; }
“Login” est un formulaire avec le setter et les getters appropriés.
Je suppose que ce bit de code dans le servlet du répartiteur doit prendre en charge l’parsing des annotations:
et c’est l’exception honteuse qui se produit lorsque j’essaie de charger ma page de destination jsp.
SEVERE: Neither BindingResult nor plain target object for bean name 'login' available as request atsortingbute java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'login' available as request atsortingbute at org.springframework.web.servlet.support.BindStatus.(BindStatus.java:141) at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:174) at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTag.java:194) at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getName(AbstractDataBoundFormElementTag.java:160) at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.autogenerateId(AbstractDataBoundFormElementTag.java:147) at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.resolveId(AbstractDataBoundFormElementTag.java:138) at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.writeDefaultAtsortingbutes(AbstractDataBoundFormElementTag.java:122) at org.springframework.web.servlet.tags.form.AbstractHtmlElementTag.writeDefaultAtsortingbutes(AbstractHtmlElementTag.java:408) at org.springframework.web.servlet.tags.form.InputTag.writeTagContent(InputTag.java:140) at org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:102) at org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:79) at org.apache.jsp.WEB_002dINF.jsp.landing_jsp._jspx_meth_form_input_0(landing_jsp.java from :208) at org.apache.jsp.WEB_002dINF.jsp.landing_jsp._jspx_meth_form_form_0(landing_jsp.java from :164) at org.apache.jsp.WEB_002dINF.jsp.landing_jsp._jspService(landing_jsp.java from :107) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111) at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:403) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:492) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:378) at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539) at org.apache.catalina.core.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:787) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:649) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:483) at org.apache.catalina.core.ApplicationDispatcher.doDispatch(ApplicationDispatcher.java:454) at org.apache.catalina.core.ApplicationDispatcher.dispatch(ApplicationDispatcher.java:350) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:300) at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238) at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250) at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1047) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:669) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:574) at javax.servlet.http.HttpServlet.service(HttpServlet.java:734) at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98) at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162) at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:330) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:174) at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:828) at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:725) at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019) at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225) at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) at com.sun.grizzly.ContextTask.run(ContextTask.java:71) at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) at java.lang.Thread.run(Thread.java:680) WARNING: ApplicationDispatcher[/sssmgt] PWC1231: Servlet.service() for servlet jsp threw exception java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'login' available as request atsortingbute at org.springframework.web.servlet.support.BindStatus.(BindStatus.java:141) at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:174) at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTag.java:194) at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getName(AbstractDataBoundFormElementTag.java:160) at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.autogenerateId(AbstractDataBoundFormElementTag.java:147) at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.resolveId(AbstractDataBoundFormElementTag.java:138) at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.writeDefaultAtsortingbutes(AbstractDataBoundFormElementTag.java:122) at org.springframework.web.servlet.tags.form.AbstractHtmlElementTag.writeDefaultAtsortingbutes(AbstractHtmlElementTag.java:408) at org.springframework.web.servlet.tags.form.InputTag.writeTagContent(InputTag.java:140) at org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:102) at org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:79) at org.apache.jsp.WEB_002dINF.jsp.landing_jsp._jspx_meth_form_input_0(landing_jsp.java from :208) at org.apache.jsp.WEB_002dINF.jsp.landing_jsp._jspx_meth_form_form_0(landing_jsp.java from :164) at org.apache.jsp.WEB_002dINF.jsp.landing_jsp._jspService(landing_jsp.java from :107) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111) at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:403) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:492) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:378) at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539) at org.apache.catalina.core.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:787) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:649) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:483) at org.apache.catalina.core.ApplicationDispatcher.doDispatch(ApplicationDispatcher.java:454) at org.apache.catalina.core.ApplicationDispatcher.dispatch(ApplicationDispatcher.java:350) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:300) at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238) at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250) at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1047) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:669) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:574) at javax.servlet.http.HttpServlet.service(HttpServlet.java:734) at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98) at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162) at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:330) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:174) at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:828) at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:725) at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019) at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225) at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) at com.sun.grizzly.ContextTask.run(ContextTask.java:71) at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) at java.lang.Thread.run(Thread.java:680) WARNING: StandardWrapperValve[dispatcher]: PWC1406: Servlet.service() for servlet dispatcher threw exception java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'login' available as request atsortingbute at org.springframework.web.servlet.support.BindStatus.(BindStatus.java:141) at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:174) at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTag.java:194) at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getName(AbstractDataBoundFormElementTag.java:160) at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.autogenerateId(AbstractDataBoundFormElementTag.java:147) at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.resolveId(AbstractDataBoundFormElementTag.java:138) at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.writeDefaultAtsortingbutes(AbstractDataBoundFormElementTag.java:122) at org.springframework.web.servlet.tags.form.AbstractHtmlElementTag.writeDefaultAtsortingbutes(AbstractHtmlElementTag.java:408) at org.springframework.web.servlet.tags.form.InputTag.writeTagContent(InputTag.java:140) at org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:102) at org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:79) at org.apache.jsp.WEB_002dINF.jsp.landing_jsp._jspx_meth_form_input_0(landing_jsp.java from :208) at org.apache.jsp.WEB_002dINF.jsp.landing_jsp._jspx_meth_form_form_0(landing_jsp.java from :164) at org.apache.jsp.WEB_002dINF.jsp.landing_jsp._jspService(landing_jsp.java from :107) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111) at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:403) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:492) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:378) at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539) at org.apache.catalina.core.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:787) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:649) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:483) at org.apache.catalina.core.ApplicationDispatcher.doDispatch(ApplicationDispatcher.java:454) at org.apache.catalina.core.ApplicationDispatcher.dispatch(ApplicationDispatcher.java:350) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:300) at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238) at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250) at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1047) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:669) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:574) at javax.servlet.http.HttpServlet.service(HttpServlet.java:734) at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98) at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162) at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:330) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:174) at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:828) at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:725) at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019) at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225) at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) at com.sun.grizzly.ContextTask.run(ContextTask.java:71) at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) at java.lang.Thread.run(Thread.java:680)
J’ai renversé la forme: la partie entrée et avait une page jsp nue, qui semble se charger. Ce n’est que lorsque j’introduis les entrées que les choses vont mal.
Je sais qu’il y a quelque chose qui ne va vraiment pas dans ma compréhension de la façon dont cette annotation est connectée et mise en correspondance avec ModelAtsortingbute. J’ai fouillé toutes les combinaisons et tous les articles dans StOv pour des exceptions similaires, mais j’ai clairement manqué quelque chose. Quelqu’un pourrait-il être assez gentil pour signaler mon erreur ici?
Dans le contrôleur, vous devez append l’object de connexion en tant qu’atsortingbut du modèle:
model.addAtsortingbute("login", new Login());
Comme ça:
@RequestMapping(value = "/", method = RequestMethod.GET) public Ssortingng displayLogin(Model model) { model.addAtsortingbute("login", new Login()); return "login"; }
Vous auriez eu cette exception en faisant un GET
sur http://localhost:8080/projectname/login
Comme Vinay l’a bien dit, vous pouvez certainement utiliser
@RequestMapping(value = "/login", method = RequestMethod.GET) public Ssortingng displayLogin(Model model) { model.addAtsortingbute("login", new Login()); return "login"; }
Mais je vais vous proposer une syntaxe alternative que je pense que vous essayiez avec Spring 3.0.
Vous pouvez également réaliser les fonctionnalités ci-dessus avec
@RequestMapping(value = "/login", method = RequestMethod.GET) public Ssortingng displayLogin(Login loginModel) { return "login"; }
et il login.jsp
(en supposant que vous utilisez InternalResourceViewResolver
), vous pouvez avoir
Remarque : modelAtsortingbute est un login
et non un loginModel
. C’est selon le nom de classe que vous fournissez en argument. Mais si vous voulez utiliser loginModel
comme modelAtsortingbute est jsp, vous pouvez faire ce qui suit
@RequestMapping(value = "/login", method = RequestMethod.GET) public Ssortingng displayLogin(@ModelAtsortingbute("loginModel")Login loginModel) { return "login"; }
et jsp aurait
Je sais qu’il existe différentes manières de faire la même chose. Mais le point le plus important à noter ici –
Imp Note : Lorsque vous ajoutez votre classe de modèle dans votre argument de méthode (comme public Ssortingng displayLogin(Login loginModel)
), elle est automatiquement créée et ajoutée à votre object Model (c’est pourquoi vous pouvez y accéder directement dans JSP sans le mettre manuellement dans un modèle) ). Ensuite, il recherchera votre requête si la requête possède des atsortingbuts qu’elle peut mapper avec la nouvelle création ModelObject. Si oui, Spring injectera des valeurs à partir des parameters de demande dans votre classe d’object de modèle personnalisée (Connexion dans ce cas).
Vous pouvez tester cela en faisant
@RequestMapping(value = "/login", method = RequestMethod.GET) public Ssortingng displayLogin(Login loginModel, Model model) { System.out.println(model.asMap().get("login").equals(loginModel)); return "login"; }
Remarque : la création d’un nouvel object de modèle personnalisé risque de ne pas être vraie si vous avez donné @SessionAtsortingbutes({"login"})
. Dans ce cas, il obtiendra de la session et remplira les valeurs.
J’ai eu un problème comme celui-ci, mais avec plusieurs “actions”. Ma solution ressemble à ceci:
... @Controller @RequestMapping("/goods") public class GoodsController { @RequestMapping(value = "add", method = GET) public Ssortingng showGoodsForm(Model model){ model.addAtsortingbute(new Commodity()); model.addAtsortingbute("searchRequest", new SearchRequest()); return "goodsForm"; } @RequestMapping(value = "add", method = POST) public ModelAndView processAddCommodities( @Valid Commodity commodity, Errors errors) { if (errors.hasErrors()) { ModelAndView model = new ModelAndView("goodsForm"); model.addObject("searchRequest", new SearchRequest()); return model; } ModelAndView model = new ModelAndView("redirect:/goods/" + commodity.getName()); model.addObject(new Commodity()); model.addObject("searchRequest", new SearchRequest()); return model; } @RequestMapping(value="searchRequest", method=POST) public Ssortingng processFindCommodity(SearchRequest commodity, Model model) { ... return "catalog"; }
Je suis sûr – ce n’est pas la “meilleure pratique”, mais cela fonctionne sans “Ni BindingResult ni object cible simple pour le nom du bean disponible en tant qu’atsortingbut de la demande”.
la première fois que vous retournez votre formulaire, assurez-vous de passer l’ atsortingbut de modèle requirejs par le formulaire, en ajoutant le code ci-dessous
@RequestMapping(value = "/", method = RequestMethod.GET) public Ssortingng login(Login login) return "test"; }
Par défaut, le nom d’atsortingbut du modèle est pris comme nom de la classe Bean avec la première lettre minuscule
En faisant cela, le formulaire qui attend un nom de backing nommant “login” sera mis à sa disposition.
Une fois le formulaire soumis, vous pouvez effectuer la validation en passant votre object bean et bindingresult comme parameters de méthode, comme indiqué ci-dessous.
@RequestMapping(value = "/login", method = RequestMethod.POST) public Ssortingng login( @ModelAtsortingbute("login") Login login, BindingResult result)
Ajoutez simplement
model.addAtsortingbute("login", new Login());
à votre méthode ..
ça va marcher..
Si vous avez un object Model ou Transfer transféré à la méthode GET mais que vous avez toujours cette erreur, vérifiez le nommage de vos variables. Utilisez les noms d’object d’entité / de transfert dans camelcase. J’avais l’object BusinessTripDTO et je l’ai nommé «voyage» pour faire court. Cela a causé cette erreur, même si j’avais toutes les autres pièces en place. Renommer les variables en businessTripDTO en Java et Thymeleaf a résolu ce problème pour moi.
J’ai eu un problème similaire dans IntelliJ IDEA. Mon code était correct à 100%, mais après avoir démarré le Tomcat, vous recevez une exception. java.lang.IllegalStateException: ni BindingResult
Je viens de retirer et de rappend la configuration de Tomcat. Et ça a fonctionné pour moi.
Une image de configuration Tomcat