【问题标题】:spring mvc bootsrap modal uisng spring tag library getById() and validation annotation based使用spring标签库getById()和基于验证注释的spring mvc引导模式
【发布时间】:2018-06-10 08:28:42
【问题描述】:

希望你们帮我解决这个问题 当我尝试获取 getById 并通过引导模式窗口进行验证时,会出现此错误!我不知道该怎么做!1代码级别有什么问题请告诉我

严重:servlet [jsp] 的 Servlet.service() 抛出异常 java.lang.IllegalStateException:既不是 BindingResult 也不是普通的 bean 名称“更新”的目标对象可用作请求属性 在 org.springframework.web.servlet.support.BindStatus.(BindStatus.java:144) 在 org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:168) 在 org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTag.java:188) 在 org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getName(AbstractDataBoundFormElementTag.java:154) 在 org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.autogenerateId(AbstractDataBoundFormElementTag.java:141) 在 org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.resolveId(AbstractDataBoundFormElementTag.java:132) 在 org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.writeDefaultAttributes(AbstractDataBoundFormElementTag.java:116) 在 org.springframework.web.servlet.tags.form.AbstractHtmlElementTag.writeDefaultAttributes(AbstractHtmlElementTag.java:422) 在 org.springframework.web.servlet.tags.form.InputTag.writeTagContent(InputTag.java:142) 在 org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:84) 在 org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:80) 在 org.apache.jsp.WEB_002dINF.views.Manage_005fTemplate_jsp._jspx_meth_form_005finput_005f0(Manage_005fTemplate_jsp.java:990) 在 org.apache.jsp.WEB_002dINF.views.Manage_005fTemplate_jsp._jspx_meth_form_005fform_005f0(Manage_005fTemplate_jsp.java:924) 在 org.apache.jsp.WEB_002dINF.views.Manage_005fTemplate_jsp._jspService(Manage_005fTemplate_jsp.java:714) 在 org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:742) 在 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:443) 在 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386) 在 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:742) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 在 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 在 org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:728) 在 org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:470) 在 org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:395) 在 org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:316) 在 org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:168) 在 org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303) 在 org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1271) 在 org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1037) 在 org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:980) 在 org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897) 在 org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) 在 org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:635) 在 org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:742) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 在 org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81) 在 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 在 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) 在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) 在 org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) 在 org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803) 在 org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) 在 org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790) 在 org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1468) 在 org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 在 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 在 java.lang.Thread.run(Thread.java:748)

2018 年 6 月 10 日下午 1:46:55 org.apache.catalina.core.StandardWrapperValve 在上下文中为 servlet [dispatcher] 调用 SEVERE: Servlet.service() 带路径 [/eposh] 抛出异常 [java.lang.IllegalStateException: Bean 名称“更新”的 BindingResult 和普通目标对象都不是 可用作请求属性] 有根本原因 java.lang.IllegalStateException:既不是 BindingResult 也不是普通的 bean 名称“更新”的目标对象可用作请求属性 在 org.springframework.web.servlet.support.BindStatus.(BindStatus.java:144) 在 org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:168) 在 org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTag.java:188) 在 org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getName(AbstractDataBoundFormElementTag.java:154) 在 org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.autogenerateId(AbstractDataBoundFormElementTag.java:141) 在 org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.resolveId(AbstractDataBoundFormElementTag.java:132) 在 org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.writeDefaultAttributes(AbstractDataBoundFormElementTag.java:116) 在 org.springframework.web.servlet.tags.form.AbstractHtmlElementTag.writeDefaultAttributes(AbstractHtmlElementTag.java:422) 在 org.springframework.web.servlet.tags.form.InputTag.writeTagContent(InputTag.java:142) 在 org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:84) 在 org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:80) 在 org.apache.jsp.WEB_002dINF.views.Manage_005fTemplate_jsp._jspx_meth_form_005finput_005f0(Manage_005fTemplate_jsp.java:990) 在 org.apache.jsp.WEB_002dINF.views.Manage_005fTemplate_jsp._jspx_meth_form_005fform_005f0(Manage_005fTemplate_jsp.java:924) 在 org.apache.jsp.WEB_002dINF.views.Manage_005fTemplate_jsp._jspService(Manage_005fTemplate_jsp.java:714) 在 org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:742) 在 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:443) 在 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386) 在 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:742) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 在 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 在 org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:728) 在 org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:470) 在 org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:395) 在 org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:316) 在 org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:168) 在 org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303) 在 org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1271) 在 org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1037) 在 org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:980) 在 org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897) 在 org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) 在 org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:635) 在 org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:742) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 在 org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81) 在 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 在 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) 在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) 在 org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) 在 org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803) 在 org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) 在 org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790) 在 org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1468) 在 org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 在 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 在 java.lang.Thread.run(Thread.java:748)

我的 Controller.java

@RequestMapping(value = "/update/{id}", method = RequestMethod.GET)
public String editTemplate(@PathVariable int id, HttpServletRequest request, HttpServletResponse reponse) {
   System.out.println("get by id" + id);
   ModelAndView model = new ModelAndView("Manage_Template");
   model.addObject("update", ts.getTemplateById(id));
   /*model.addAttribute("update", ts.getTemplateById(id));*/
   return "Manage_Template";

}

我的 JSP:

 <div class="modal fade" id="myModal1" role="dialog">
  <div class="modal-dialog" style="width:80%;">

    <!-- Modal content-->
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal">&times;</button>
        <h4 class="modal-title">Update Template</h4>
      </div>
      <div class="modal-body">
        <div class="box box-warning">
          <div class="box-header">

          </div>
          <div class="box-body">
            <form:form role="form" action="" method="post" id="update_form" commandName="update" modelAttribute="update">
              <section class="col-lg-12">
                <div class="form-group">


                  <form:input path="template_name" class="form-control" placeholder="Name Of Template" name="template_name" />

                </div>

              </section>
              <section class="col-lg-12">

                <form:textarea id="editor1" rows="10" cols="80" path="summary" placeholder="Place some text here" name="summary" />

                <!--  </textarea> -->
              </section><br>
              <div class="form-group">

                <input type="submit" class="form-control btn btn-primary" value="Update Template" id="update_template_id">
              </div>


            </form:form>

          </div>





        </div>
      </div>
    </div>

  </div>
  <!---- in this JSP I am getting error -->



  <td><button onclick="editTemplate(<%=rs.getString(1)%>)" data-target="#myModal1" data-toggle="modal" title="Edit" class="btn btn-success btn-sm"><i class="fa fa-edit"></i>Edit</button></td>

  <script>
    function editTemplate(id) {
      $.get("update/" + id, function(result) {
        /* $("#myModal1").modal('show') */
      });
    }
  </script>
</div>

【问题讨论】:

    标签: java spring spring-mvc jakarta-ee model-view-controller


    【解决方案1】:

    因为您的 JSP 视图中缺少属性,(update 属性)

    同样在您的控制器中,您返回的是 Sting 而不是 A modelandview,因此使用 Model 作为方法参数(而不是实例化模型和视图)并在其中附加您的模型属性,您的控制器应该如下所示:

    @RequestMapping(value = "/update/{id}", method = RequestMethod.GET)
           public String editTemplate(@PathVariable int id,
                                      Model model,
                                      HttpServletRequest request,
                                      HttpServletResponse reponse) {
            System.out.println("get by id"+id);
    
            model.addAttribute("update",ts.getTemplateById(id));
    
            return "Manage_Template";
    }
    

    注意: ts.getTemplateById(id) 是什么?确实是 ts(服务、组件?)?

    【讨论】:

    • ts.getTemplateById(id) ? ts 表示服务,并且上面也尝试过。但由于相同的错误而没有得到
    • 你的班级被@Controller@RestController 注释了?也尝试在 try catch 块中包围 model.attribute (...)...
    猜你喜欢
    • 2013-05-14
    • 2010-11-17
    • 2010-10-04
    • 1970-01-01
    • 2012-10-26
    • 2012-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多