2017-08-21 64 views
0

在我的情況下,Web服務器返回HTTP狀態500,請參閱下面的完整堆棧。發生在方法editWorkerBindingResult和bean名稱'tabel'的普通目標對象都不是HTTP狀態500

錯誤時的方法如果用第二形式(..的ModelAttribute =「TABEL」 ..)工作,當你不使用Spring標籤返回一個視圖

@RequestMapping(value=("/worker/edit/{workerId}"), method = RequestMethod.GET) 
     public String editWorker(@PathVariable("workerId") Long workerId, Model model) { 
      Worker worker = workerService.getWorkerById(workerId); 
      model.addAttribute(worker); 
      return "db_editor"; //error occurs here 
     } 

,再有就是沒有錯誤。

請告訴我,這是怎麼回事?

JSP文件:

<%@ page contentType="text/html; charset=UTF-8" language="java" %> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<%@ taglib prefix="sf" uri="http://www.springframework.org/tags/form" %> 
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 
<%@ taglib prefix="s" uri="http://www.springframework.org/tags" %> 

<div id="editor"> 
    <div id="f_ed"> 
     <sf:form method="post" action="/db_editor/worker/add" modelAttribute="worker"> 
      <sf:hidden path="id"/> 
      <fieldset> 
       <table> 
        <tr> 
         <td><sf:label path="fam">First name</sf:label></td> 
         <td><sf:input path="fam" size="30"/><br/> 
          <sf:errors path="fam" cssClass="error" /> 
         </td> 
         <td>Табель</td> 
        </tr> 
        <tr> 
         <td><sf:label path="imj">Last name</sf:label></td> 
         <td><sf:input path="imj" size="30"/><br/> 
          <sf:errors path="imj" cssClass="error" /> 
         </td> 
        </tr> 
        <tr> 
         <td><sf:label path="otch">Middle name</sf:label></td> 
         <td><sf:input path="otch" size="30"/><br/> 
          <sf:errors path="otch" cssClass="error" /> 
         </td> 
        </tr> 
        <tr> 
         <td></td> 
         <td><input name="commit" type="submit" value="Commit" /> 
         </td> 
        </tr> 
       </table> 
      </fieldset> 
     </sf:form> 
    </div> 
    <div id="tab_ed"> 
     <sf:form method="post" action="/db_editor/tabel/add" modelAttribute="tabel"> 
      <sf:input path="d" type="date" /> 
      <sf:input path="d_type" size="2"/> 
      <input name="commit" type="submit" value="Add"> 

     </sf:form> 
    </div> 
    <c:if test="${!empty workerList}"> 
     <div id = "r_ed"> 
      <table> 
       <tr> 
        <th>Name</th> 
        <th>BD</th> 
       </tr> 
       <c:forEach var="worker" items="${workerList}"> 
        <s:url value="db_editor/worker/edit/${worker.id}" var="edit_url" /> 
        <tr> 
         <td>${worker.fam}</td> 
         <td>${worker.imj}</td> 
         <td>${worker.otch}</td> 
         <td><fmt:formatDate value="${worker.dbirth}" pattern="dd.MM.yyyy" /> </td> 
         <td><a href="${edit_url}">Edit</a></td> 
         <td><a href="db_editor/worker/delete/${worker.id}">Delete</a></td> 
        </tr> 
       </c:forEach> 
      </table> 
     </div> 
    </c:if> 
</div> 

控制器:

import .. 

@Controller 
@RequestMapping("/db_editor") 
public class DBEditorController_test { 
    private WorkerService workerService; 
    private TabelService tabelService; 

    @Inject 
    public DBEditorController_test(WorkerService workerService, TabelService tabelService) { 
     this.workerService = workerService; 
     this.tabelService = tabelService; 
    } 

    @RequestMapping(method = RequestMethod.GET) 
    public String getWorkers(Model model) { 
     model.addAttribute("worker", new Worker()); 
     model.addAttribute("tabel", new Tabel()); 
     model.addAttribute("workerList", this.workerService.listWorker()); 

     return "db_editor"; 
    } 

    @RequestMapping(value = "/worker/add", method = RequestMethod.POST) 
    public String addWorkerFromForm(Worker worker) { 
     workerService.addWorker(worker); 
     return "redirect:/db_editor"; 
    } 

    @RequestMapping("/worker/delete/{workerId}") 
    public String delWorker(@PathVariable("workerId") Long workerId) { 
     workerService.deleteWorker(workerId); 
     return "redirect:/db_editor"; 
    } 

    @RequestMapping(value=("/worker/edit/{workerId}"), method = RequestMethod.GET) 
    public String editWorker(@PathVariable("workerId") Long workerId, Model model) { 
     Worker worker = workerService.getWorkerById(workerId); 
     model.addAttribute(worker); 
     return "db_editor"; 
    } 

    @RequestMapping(value = "/tabel/add", method = RequestMethod.POST) 
    public String addOneDayForTabel (Tabel tabel) { 
     tabel.setWorker(workerService.getWorkerById(2L)); 
     tabelService.addTabel(tabel); 
     return "redirect:/db_editor"; 
    } 
} 

模型:

Worker.java

@Entity 
@Table(name="workers") 
public class Worker { 

    @Id 
    @Column(name = "id") 
    @GeneratedValue 
    private Long id; 

    @Column(name = "fam") 
    private String fam; 

    @Column(name = "imj") 
    private String imj; 

    @Column(name = "otch") 
    private String otch; 

    @Column(name = "dbirth") 
    private Date dbirth; 

/*getters and setters*/ 
} 

Tabel.java

@Entity 
@Table(name="tabel") 
public class Tabel { 

    @Id 
    @Column(name = "id") 
    @GeneratedValue 
    private Long id; 

    @Column(name = "d") 
    private Date d; 

    @Column(name = "d_type") 
    private String d_type; 

    @ManyToOne 
    @JoinColumn(name="worker_id") 
    private Worker worker; 

    /*getters and setters*/ 
} 

完整堆棧跟蹤:在您的控制器

HTTP Status 500 - Request processing failed; nested exception is org.apache.tiles.impl.CannotRenderException: ServletException including path '/WEB-INF/views/main_template.jsp'. 

type Exception report 

message Request processing failed; nested exception is org.apache.tiles.impl.CannotRenderException: ServletException including path '/WEB-INF/views/main_template.jsp'. 

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

exception 

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.apache.tiles.impl.CannotRenderException: ServletException including path '/WEB-INF/views/main_template.jsp'. 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:656) 
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:622) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 
    org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) 
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 
root cause 

org.apache.tiles.impl.CannotRenderException: ServletException including path '/WEB-INF/views/main_template.jsp'. 
    org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:680) 
    org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:633) 
    org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:322) 
    org.springframework.web.servlet.view.tiles2.TilesView.renderMergedOutputModel(TilesView.java:124) 
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250) 
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1047) 
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817) 
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) 
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:622) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 
    org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) 
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 
root cause 

org.apache.tiles.util.TilesIOException: ServletException including path '/WEB-INF/views/main_template.jsp'. 
    org.apache.tiles.servlet.context.ServletUtil.wrapServletException(ServletUtil.java:232) 
    org.apache.tiles.servlet.context.ServletTilesRequestContext.forward(ServletTilesRequestContext.java:243) 
    org.apache.tiles.servlet.context.ServletTilesRequestContext.dispatch(ServletTilesRequestContext.java:222) 
    org.apache.tiles.renderer.impl.TemplateAttributeRenderer.write(TemplateAttributeRenderer.java:44) 
    org.apache.tiles.renderer.impl.AbstractBaseAttributeRenderer.render(AbstractBaseAttributeRenderer.java:103) 
    org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:659) 
    org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:678) 
    org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:633) 
    org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:322) 
    org.springframework.web.servlet.view.tiles2.TilesView.renderMergedOutputModel(TilesView.java:124) 
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250) 
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1047) 
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817) 
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) 
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:622) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 
    org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) 
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 
root cause 

javax.servlet.ServletException: org.apache.tiles.jsp.taglib.TilesJspException: IO Error executing tag: JSPException including path '/WEB-INF/views/db_editor.jsp'. 
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:906) 
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:838) 
    org.apache.jsp.WEB_002dINF.views.main_005ftemplate_jsp._jspService(main_005ftemplate_jsp.java:223) 
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:443) 
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385) 
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 
    org.apache.tiles.servlet.context.ServletTilesRequestContext.forward(ServletTilesRequestContext.java:241) 
    org.apache.tiles.servlet.context.ServletTilesRequestContext.dispatch(ServletTilesRequestContext.java:222) 
    org.apache.tiles.renderer.impl.TemplateAttributeRenderer.write(TemplateAttributeRenderer.java:44) 
    org.apache.tiles.renderer.impl.AbstractBaseAttributeRenderer.render(AbstractBaseAttributeRenderer.java:103) 
    org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:659) 
    org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:678) 
    org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:633) 
    org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:322) 
    org.springframework.web.servlet.view.tiles2.TilesView.renderMergedOutputModel(TilesView.java:124) 
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250) 
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1047) 
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817) 
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) 
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:622) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 
    org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) 
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 
root cause 

org.apache.tiles.util.TilesIOException: JSPException including path '/WEB-INF/views/db_editor.jsp'. 
    org.apache.tiles.servlet.context.ServletUtil.wrapServletException(ServletUtil.java:232) 
    org.apache.tiles.jsp.context.JspTilesRequestContext.include(JspTilesRequestContext.java:105) 
    org.apache.tiles.jsp.context.JspTilesRequestContext.dispatch(JspTilesRequestContext.java:96) 
    org.apache.tiles.renderer.impl.UntypedAttributeRenderer.write(UntypedAttributeRenderer.java:61) 
    org.apache.tiles.renderer.impl.AbstractBaseAttributeRenderer.render(AbstractBaseAttributeRenderer.java:103) 
    org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:659) 
    org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:337) 
    org.apache.tiles.jsp.taglib.InsertAttributeTag.render(InsertAttributeTag.java:234) 
    org.apache.tiles.jsp.taglib.InsertAttributeTag.render(InsertAttributeTag.java:211) 
    org.apache.tiles.jsp.taglib.RenderTag.doEndTag(RenderTag.java:220) 
    org.apache.jsp.WEB_002dINF.views.main_005ftemplate_jsp._jspx_meth_t_005finsertAttribute_005f0(main_005ftemplate_jsp.java:271) 
    org.apache.jsp.WEB_002dINF.views.main_005ftemplate_jsp._jspService(main_005ftemplate_jsp.java:159) 
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:443) 
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385) 
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 
    org.apache.tiles.servlet.context.ServletTilesRequestContext.forward(ServletTilesRequestContext.java:241) 
    org.apache.tiles.servlet.context.ServletTilesRequestContext.dispatch(ServletTilesRequestContext.java:222) 
    org.apache.tiles.renderer.impl.TemplateAttributeRenderer.write(TemplateAttributeRenderer.java:44) 
    org.apache.tiles.renderer.impl.AbstractBaseAttributeRenderer.render(AbstractBaseAttributeRenderer.java:103) 
    org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:659) 
    org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:678) 
    org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:633) 
    org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:322) 
    org.springframework.web.servlet.view.tiles2.TilesView.renderMergedOutputModel(TilesView.java:124) 
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250) 
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1047) 
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817) 
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) 
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:622) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 
    org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) 
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 
root cause 

java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'tabel' available as request attribute 
    org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:141) 
    org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:174) 
    org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTag.java:194) 
    org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getName(AbstractDataBoundFormElementTag.java:160) 
    org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.autogenerateId(AbstractDataBoundFormElementTag.java:147) 
    org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.resolveId(AbstractDataBoundFormElementTag.java:138) 
    org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.writeDefaultAttributes(AbstractDataBoundFormElementTag.java:122) 
    org.springframework.web.servlet.tags.form.AbstractHtmlElementTag.writeDefaultAttributes(AbstractHtmlElementTag.java:408) 
    org.springframework.web.servlet.tags.form.InputTag.writeTagContent(InputTag.java:140) 
    org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:102) 
    org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:79) 
    org.apache.jsp.WEB_002dINF.views.db_005feditor_jsp._jspx_meth_sf_005finput_005f3(db_005feditor_jsp.java:630) 
    org.apache.jsp.WEB_002dINF.views.db_005feditor_jsp._jspx_meth_sf_005fform_005f1(db_005feditor_jsp.java:587) 
    org.apache.jsp.WEB_002dINF.views.db_005feditor_jsp._jspService(db_005feditor_jsp.java:317) 
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:443) 
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385) 
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:945) 
    org.apache.jasper.runtime.PageContextImpl.doInclude(PageContextImpl.java:679) 
    org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:673) 
    org.apache.tiles.jsp.context.JspTilesRequestContext.include(JspTilesRequestContext.java:103) 
    org.apache.tiles.jsp.context.JspTilesRequestContext.dispatch(JspTilesRequestContext.java:96) 
    org.apache.tiles.renderer.impl.UntypedAttributeRenderer.write(UntypedAttributeRenderer.java:61) 
    org.apache.tiles.renderer.impl.AbstractBaseAttributeRenderer.render(AbstractBaseAttributeRenderer.java:103) 
    org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:659) 
    org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:337) 
    org.apache.tiles.jsp.taglib.InsertAttributeTag.render(InsertAttributeTag.java:234) 
    org.apache.tiles.jsp.taglib.InsertAttributeTag.render(InsertAttributeTag.java:211) 
    org.apache.tiles.jsp.taglib.RenderTag.doEndTag(RenderTag.java:220) 
    org.apache.jsp.WEB_002dINF.views.main_005ftemplate_jsp._jspx_meth_t_005finsertAttribute_005f0(main_005ftemplate_jsp.java:271) 
    org.apache.jsp.WEB_002dINF.views.main_005ftemplate_jsp._jspService(main_005ftemplate_jsp.java:159) 
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:443) 
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385) 
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 
    org.apache.tiles.servlet.context.ServletTilesRequestContext.forward(ServletTilesRequestContext.java:241) 
    org.apache.tiles.servlet.context.ServletTilesRequestContext.dispatch(ServletTilesRequestContext.java:222) 
    org.apache.tiles.renderer.impl.TemplateAttributeRenderer.write(TemplateAttributeRenderer.java:44) 
    org.apache.tiles.renderer.impl.AbstractBaseAttributeRenderer.render(AbstractBaseAttributeRenderer.java:103) 
    org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:659) 
    org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:678) 
    org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:633) 
    org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:322) 
    org.springframework.web.servlet.view.tiles2.TilesView.renderMergedOutputModel(TilesView.java:124) 
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250) 
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1047) 
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817) 
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) 
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:622) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 
    org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) 
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 

回答

0

編輯方法 - editWorker - 不加入一個tabel屬性模型。其實他們中的任何一個都在這樣做,但所有人都在重定向到相同的觀點。所以你需要在你的方法中添加這個模型屬性,就像你在getWorkers上做的那樣。

但是我的建議是,你應該寫出用@ModelAttribute註釋的方法來默認添加這些屬性,以便它們始終成爲模型的一部分。如果您的任何請求映射方法添加它們,它們將覆蓋這些默認值。

@ModelAttribute ("worker") 
public Worker setWorkerToModel() 
{ 
    return new Worker(); 
} 

@ModelAttribute ("tabel") 
public Tabel setTabelToModel() 
{ 
    return new Tabel(); 
} 

然後,您可以從您的getWorkers方法中刪除以下行。

model.addAttribute("worker", new Worker()); 
model.addAttribute("tabel", new Tabel()); 
+0

alfcope,你最好的!!! 但我不明白爲什麼我的示例不起作用;) – Genka

+0

因爲模型中的屬性僅適用於當前請求,因爲它們被認爲是用於視圖。每當你提出請求時,模型都會被初始化,並且它將被清空。您需要再次添加屬性。這就是'@ ModelAttribute'的作用。你的方法不是將'tabel'屬性添加到模型中,而是返回的視圖需要它,只有'getWorkers'。看看文檔:http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#mvc-ann-modelattrib-methods – alfcope

+0

我意識到,爲了讓我的例子你需要在'editWorker'方法中添加一個'model.addAttribute(「tabel」,新的Tabel());'。再次感謝! – Genka

相關問題