【问题标题】:Spring form validate - duplicate id reference春季表单验证 - 重复的 id 参考
【发布时间】:2014-12-16 22:08:14
【问题描述】:

正如您在下面的打印屏幕上看到的那样,我在 Intellij 14.0 中遇到了这样的错误。 我不知道出了什么问题...

我确信问题在于这一行是因为当我评论它们时,一切都很顺利。来自服务器的错误未提供任何有价值的信息...

当我运行服务器并转到任何页面时,我都会遇到此错误:

type Exception report

message An exception occurred processing JSP page /WEB-INF/pages/index.jsp at line 44

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/pages/index.jsp at line 44

41:       </div>
42: 
43:       <div class="notetype">
44:         <form:form action="/addNoteType" modelAttribute="noteType">
45:           <div class="form-group">
46:             <label for="notetypeName">Name</label>
47:             <form:input path="name" id="notetypeName" class="form-control" placeholder="Enter NoteType Name" />


Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:460)
    org.apache.jasper.servlet.JspServlet._serviceJspFile(JspServlet.java:391)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:335)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:172)
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303)
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1228)
    org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1011)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:955)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:618)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause

java.io.IOException: JspException when evaluating the body
    org.apache.tiles.request.jsp.autotag.JspModelBody.evaluate(JspModelBody.java:64)
    org.apache.tiles.autotag.core.runtime.AbstractModelBody.evaluateWithoutWriting(AbstractModelBody.java:77)
    org.apache.tiles.template.InsertDefinitionModel.execute(InsertDefinitionModel.java:97)
    org.apache.tiles.jsp.taglib.InsertDefinitionTag.doTag(InsertDefinitionTag.java:254)
    org.apache.jsp.WEB_002dINF.pages.index_jsp._jspService(index_jsp.java:104)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    org.apache.jasper.servlet.JspServlet._serviceJspFile(JspServlet.java:391)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:335)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:172)
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303)
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1228)
    org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1011)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:955)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:618)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause

javax.servlet.jsp.JspException: java.io.IOException: JspException when evaluating the body
    org.apache.jsp.WEB_002dINF.pages.index_jsp$Helper.invoke(index_jsp.java:608)
    org.apache.tiles.request.jsp.autotag.JspModelBody.evaluate(JspModelBody.java:62)
    org.apache.tiles.autotag.core.runtime.AbstractModelBody.evaluateWithoutWriting(AbstractModelBody.java:77)
    org.apache.tiles.template.InsertDefinitionModel.execute(InsertDefinitionModel.java:97)
    org.apache.tiles.jsp.taglib.InsertDefinitionTag.doTag(InsertDefinitionTag.java:254)
    org.apache.jsp.WEB_002dINF.pages.index_jsp._jspService(index_jsp.java:104)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    org.apache.jasper.servlet.JspServlet._serviceJspFile(JspServlet.java:391)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:335)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:172)
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303)
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1228)
    org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1011)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:955)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:618)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause

java.io.IOException: JspException when evaluating the body
    org.apache.tiles.request.jsp.autotag.JspModelBody.evaluate(JspModelBody.java:64)
    org.apache.tiles.autotag.core.runtime.AbstractModelBody.evaluateAsString(AbstractModelBody.java:59)
    org.apache.tiles.template.PutAttributeModel.execute(PutAttributeModel.java:96)
    org.apache.tiles.jsp.taglib.PutAttributeTag.doTag(PutAttributeTag.java:226)
    org.apache.jsp.WEB_002dINF.pages.index_jsp$Helper.invoke0(index_jsp.java:393)
    org.apache.jsp.WEB_002dINF.pages.index_jsp$Helper.invoke(index_jsp.java:594)
    org.apache.tiles.request.jsp.autotag.JspModelBody.evaluate(JspModelBody.java:62)
    org.apache.tiles.autotag.core.runtime.AbstractModelBody.evaluateWithoutWriting(AbstractModelBody.java:77)
    org.apache.tiles.template.InsertDefinitionModel.execute(InsertDefinitionModel.java:97)
    org.apache.tiles.jsp.taglib.InsertDefinitionTag.doTag(InsertDefinitionTag.java:254)
    org.apache.jsp.WEB_002dINF.pages.index_jsp._jspService(index_jsp.java:104)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    org.apache.jasper.servlet.JspServlet._serviceJspFile(JspServlet.java:391)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:335)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:172)
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303)
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1228)
    org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1011)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:955)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:618)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause

javax.servlet.jsp.JspException: java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'notepad' available as request attribute
    org.apache.jsp.WEB_002dINF.pages.index_jsp$Helper.invoke(index_jsp.java:608)
    org.apache.tiles.request.jsp.autotag.JspModelBody.evaluate(JspModelBody.java:62)
    org.apache.tiles.autotag.core.runtime.AbstractModelBody.evaluateAsString(AbstractModelBody.java:59)
    org.apache.tiles.template.PutAttributeModel.execute(PutAttributeModel.java:96)
    org.apache.tiles.jsp.taglib.PutAttributeTag.doTag(PutAttributeTag.java:226)
    org.apache.jsp.WEB_002dINF.pages.index_jsp$Helper.invoke0(index_jsp.java:393)
    org.apache.jsp.WEB_002dINF.pages.index_jsp$Helper.invoke(index_jsp.java:594)
    org.apache.tiles.request.jsp.autotag.JspModelBody.evaluate(JspModelBody.java:62)
    org.apache.tiles.autotag.core.runtime.AbstractModelBody.evaluateWithoutWriting(AbstractModelBody.java:77)
    org.apache.tiles.template.InsertDefinitionModel.execute(InsertDefinitionModel.java:97)
    org.apache.tiles.jsp.taglib.InsertDefinitionTag.doTag(InsertDefinitionTag.java:254)
    org.apache.jsp.WEB_002dINF.pages.index_jsp._jspService(index_jsp.java:104)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    org.apache.jasper.servlet.JspServlet._serviceJspFile(JspServlet.java:391)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:335)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:172)
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303)
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1228)
    org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1011)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:955)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:618)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause

java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'notepad' available as request attribute
    org.springframework.web.servlet.support.BindStatus.<init>(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.writeDefaultAttributes(AbstractDataBoundFormElementTag.java:117)
    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.pages.index_jsp._jspx_meth_form_005finput_005f0(index_jsp.java:224)
    org.apache.jsp.WEB_002dINF.pages.index_jsp.access$5(index_jsp.java:206)
    org.apache.jsp.WEB_002dINF.pages.index_jsp$Helper.invoke2(index_jsp.java:440)
    org.apache.jsp.WEB_002dINF.pages.index_jsp$Helper.invoke(index_jsp.java:600)
    org.apache.tiles.request.jsp.autotag.JspModelBody.evaluate(JspModelBody.java:62)
    org.apache.tiles.autotag.core.runtime.AbstractModelBody.evaluateAsString(AbstractModelBody.java:59)
    org.apache.tiles.template.PutAttributeModel.execute(PutAttributeModel.java:96)
    org.apache.tiles.jsp.taglib.PutAttributeTag.doTag(PutAttributeTag.java:226)
    org.apache.jsp.WEB_002dINF.pages.index_jsp$Helper.invoke0(index_jsp.java:393)
    org.apache.jsp.WEB_002dINF.pages.index_jsp$Helper.invoke(index_jsp.java:594)
    org.apache.tiles.request.jsp.autotag.JspModelBody.evaluate(JspModelBody.java:62)
    org.apache.tiles.autotag.core.runtime.AbstractModelBody.evaluateWithoutWriting(AbstractModelBody.java:77)
    org.apache.tiles.template.InsertDefinitionModel.execute(InsertDefinitionModel.java:97)
    org.apache.tiles.jsp.taglib.InsertDefinitionTag.doTag(InsertDefinitionTag.java:254)
    org.apache.jsp.WEB_002dINF.pages.index_jsp._jspService(index_jsp.java:104)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    org.apache.jasper.servlet.JspServlet._serviceJspFile(JspServlet.java:391)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:335)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:172)
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303)
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1228)
    org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1011)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:955)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:618)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
note The full stack trace of the root cause is available in the Apache Tomcat/8.0.12 logs.

【问题讨论】:

  • 异常很清楚:javax.servlet.jsp.JspException: java.lang.IllegalStateException: Bean 名称“记事本”的 BindingResult 和普通目标对象都不能用作请求属性。您需要检查您的控制器关于模型属性(相关注释)
  • 如果您认为问题出在您的 form:label 和 form:errors 使用重复标记路径变量上,那不是。这是 Intellij 上的错误。他们声称在最新的 Intellij Idea 版本中修复了它。我认为在 2016.2 版本中不是 2016.1 youtrack.jetbrains.com/issue/IDEA-134189

标签: validation spring-mvc intellij-idea


【解决方案1】:

这是与您的代码相同的代码:

priceincrease.jsp

<form:form method="post" modelAttribute="priceIncrease">
  <table width="95%" bgcolor="f8f8ff" border="0" cellspacing="0" cellpadding="5">
    <tr>
      <td align="right" width="20%">Increase (%):</td>
      <td width="20%">
        <form:input path="percentage"/>
      </td>
      <td width="60%">
        <form:errors path="percentage" cssClass="error"/>
      </td>
    </tr>
  </table>
  <br>
  <input type="submit" align="center" value="Execute">
</form:form>

PriceIncreaseController.java

    @RequestMapping(method = RequestMethod.GET)
    public String get(Model model) {
        PriceIncrease priceIncrease = new PriceIncrease();
        priceIncrease.setPercentage(20);
        model.addAttribute("priceIncrease", priceIncrease);
        return "priceincrease";
    }

    @RequestMapping(method = RequestMethod.POST)
    public String post(@Valid @ModelAttribute("priceIncrease") PriceIncrease priceIncrease, BindingResult result, Model model) {

        if (result.hasErrors()) {
            return "priceincrease";
        }

        int increase = priceIncrease.getPercentage();
        productManager.increasePrice(increase);

        return "redirect:home";
    }

您正在寻找 POST 方法中的问题,但错误发生在更早的 GET 方法中。在那里你应该添加一个名为“记事本”的模型属性。

附:我的 IDEA 也突出了路径 =)

【讨论】:

  • 这意味着对表单使用重复引用是可以的:label @sinedsem?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-19
  • 1970-01-01
  • 2015-05-18
  • 1970-01-01
相关资源
最近更新 更多