2017-08-30 66 views
3

我在春天啓動一個biginner,我有這個表至極有一個編輯按鈕的每一行彈簧引導+ thymeleaf CRUD:編輯一行

<td><a th:href="@{/appel/edit/{id}(id=${appel.id})}">edit</a></td>

這是它的控制器:

@RequestMapping(value= "/appel/edit/{id}", method = RequestMethod.GET) 
    public String editapl(@PathVariable("id") Long id, ModelMap model) { 
    model.put("editappel", appelService.findAppelById(id)); 
       return "edit"; 

    } 

當我點擊「編輯」它應該是帶我到編輯視圖,這樣我就可以開始編輯

<form action="#" th:action="@{/update}" th:object="${editappel}" method="post"> 
 
\t \t \t <div class="form-control"> 
 
\t \t \t \t <label class="header"> id <span>:</span></label> 
 
\t \t \t \t <input type="hidden" id="name" th:field="*{id}"/> 
 
\t \t \t </div> 
 
\t \t 
 
\t \t 
 
\t \t \t <div class="form-control"> \t 
 
\t \t \t \t <label class="header">Service Code <span>:</span></label> \t 
 
\t \t \t \t <input type="tel" id="usrtel" th:field="*{serviceCode}" required=""/> 
 
\t \t \t </div> \t 
 
\t \t \t 
 
\t \t \t <div class="form-control"> 
 
\t \t \t \t <label class="enquiry">Description <span>:</span></label> 
 
\t \t \t \t <textarea id="message" th:field="*{description}" ></textarea> 
 
\t \t \t \t <div class="clear"></div> 
 
\t \t \t </div> 
 
\t \t \t 
 
\t \t \t <div class="form-control"> 
 
\t \t \t \t <label class="enquiry">answer <span>:</span></label> 
 
\t \t \t \t <textarea id="answer" th:field="*{answer}" ></textarea> 
 
\t \t \t \t <div class="clear"></div> 
 
\t \t \t </div> 
 
\t \t \t 
 
\t \t \t 
 
\t \t \t <div class="form-control"> 
 
\t \t \t \t <input type="reset" class="reset" value="Reset"/> 
 
\t \t \t \t <input type="submit" class="register" value="save changes" /> 
 
\t \t \t \t <div class="clear"></div> 
 
\t \t \t </div> \t 
 
\t \t </form>

,這裏是它的控制器:

@RequestMapping(value="/update",method=RequestMethod.POST) 
public String saveAppel(@ModelAttribute("editappel") Appel editappel,BindingResult result, ModelMap model) 
{if (result.hasErrors()) { 
    return "edit";} 


    appelRepository.save(editappel); 
     return "index";} 

的問題是,當我點擊編輯就帶我到白色標籤的錯誤頁面,當我檢查堆棧跟蹤,它提這:既沒有BindingResult,也沒有作爲請求屬性可用的bean名稱「editappel」的普通目標對象,我無法弄清楚問題出在哪裏?

這是堆棧跟蹤

java.lang.IllegalStateException:既不BindingResult也不對豆名「APPEL」可作爲在org.springframework.web.servlet.support.BindStatus請求屬性 平原目標對象(爲bindStatus。 .java:144)〜[spring-webmvc-4.3.10.RELEASE.jar:4.3.10.RELEASE] at org.thymeleaf.spring4.util.FieldUtils.getBindStatusFromParsedExpression(FieldUtils.java:401)〜[thymeleaf-spring4 -2.1.5.RELEASE.jar:2.1.5.RELEASE] at org.thymeleaf.spring4.util.FieldUtils.getBindStatus(FieldUtils.java:328)〜[thymeleaf-spring4-2.1.5.RELEASE.jar:2.1 .5.RELEASE] at org.thymeleaf.spring4.util.FieldUtils.getBindStatus(FieldUtil s.java:294)〜[thymeleaf-spring4-2.1.5.RELEASE.jar:2.1.5.RELEASE] at org.thymeleaf.spring4.processor.attr.AbstractSpringFieldAttrProcessor.processAttribute(AbstractSpringFieldAttrProcessor.java:98)〜[ thymeleaf-spring4-2.1.5.RELEASE.jar:2.1.5.RELEASE] at org.thymeleaf.processor.attr.AbstractAttrProcessor.doProcess(AbstractAttrProcessor.java:87)〜[thymeleaf-2.1.5.RELEASE.jar: 2.1.5.RELEASE] at org.thymeleaf.processor.AbstractProcessor.process(AbstractProcessor.java:212)〜[thymeleaf-2.1.5.RELEASE.jar:2.1.5.RELEASE] at org.thymeleaf.dom。 Node.applyNextProcessor(Node.java:1017)〜[thymeleaf-2.1.5.RELEASE.jar:2.1.5.RELEASE] at org.thymeleaf.dom.Node.processNode(Node.java:972)〜[thymeleaf- 2.1.5.RELEASE.jar:2.1.5.RELEASE] at org.thymeleaf.dom.NestableNode.computeNextChild(NestableNode.java:695)〜[thymel eaf-2.1.5.RELEASE.jar:2.1.5.RELEASE] at org.thymeleaf.dom.NestableNode.doAdditionalProcess(NestableNode.java:668)〜[thymeleaf-2.1.5.RELEASE.jar:2.1.5。發佈] at org.thymeleaf.dom.Node.processNode(Node.java:990)〜[thymeleaf-2.1.5.RELEASE.jar:2.1.5.RELEASE] at org.thymeleaf.dom.NestableNode.computeNextChild( NestableNode.java:695)〜[thymeleaf-2.1.5.RELEASE.jar:2.1.5.RELEASE] at org.thymeleaf.dom.NestableNode.doAdditionalProcess(NestableNode.java:668)〜[thymeleaf-2.1.5。 RELEASE.jar:2.1.5.RELEASE] at org.thymeleaf.dom.Node.processNode(Node.java:990)〜[thymeleaf-2.1.5.RELEASE.jar:2.1.5.RELEASE] at org。 thymeleaf.dom.NestableNode.computeNextChild(NestableNode.java:695)〜[thymeleaf-2.1.5.RELEASE.jar:2.1.5.RELEASE] at org.thymeleaf.dom.NestableNode.doAdditionalProcess( NestableNode.java:668)〜[thymeleaf-2.1.5.RELEASE.jar:2.1.5.RELEASE] at org。thymeleaf.dom.Node.processNode(Node.java:990)〜[thymeleaf-2.1.5.RELEASE.jar:2.1.5.RELEASE] at org.thymeleaf.dom.NestableNode.computeNextChild(NestableNode.java:695) 〜[thymeleaf-2.1.5.RELEASE.jar:2.1.5.RELEASE] at org.thymeleaf.dom.NestableNode.doAdditionalProcess(NestableNode.java:668)〜[thymeleaf-2.1.5.RELEASE.jar:2.1。 5.RELEASE] at org.thymeleaf.dom.Node.processNode(Node.java:990)〜[thymeleaf-2.1.5.RELEASE.jar:2.1.5.RELEASE] at org.thymeleaf.dom.NestableNode。 computeNextChild(NestableNode.java:695)〜[thymeleaf-2.1.5.RELEASE.jar:2.1.5.RELEASE] at org.thymeleaf.dom.NestableNode.doAdditionalProcess(NestableNode.java:668)〜[thymeleaf-2.1。 5.RELEASE.jar:2.1.5.RELEASE] at org.thymeleaf.dom.Node.processNode(Node.java:990)〜[thymeleaf-2.1.5.RELEASE.jar:2.1.5.RELEASE] at org.thymeleaf.dom.NestableNode.computeNextChild(NestableNode.java:695)〜[thymeleaf-2.1.5.RELEASE.jar:2.1.5.RELEASE] at org.thymeleaf.dom.NestableNode.doAdditionalProcess(NestableNode.java :668)〜[thymeleaf-2.1.5.RELEASE.jar:2.1.5.RELEASE] at org.thymeleaf.dom.Node.processNode(Node.java:990)〜[thymeleaf-2.1.5.RELEASE.jar :2.1.5.RELEASE] at org.thymeleaf.dom.NestableNode.computeNextChild(NestableNode.java:695)〜[thymeleaf-2.1.5.RELEASE.jar:2.1.5.RELEASE] at org.thymeleaf.dom .NestableNode.doAdditionalProcess(NestableNode.java:668)〜[thymeleaf-2.1.5.RELEASE.jar:2.1.5.RELEASE] at org.thymeleaf.dom.Node.processNode(Node.java:990)〜[thymeleaf -2.1.5.RELEASE.jar:2.1.5.RELEASE] at org.thymeleaf.dom.Document.process(Document.java:93)〜[thymeleaf-2.1.5.RELEASE.jar:2.1.5.RELEASE ] at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1155)〜[thymeleaf-2.1.5.RELEASE.jar:2.1.5.RELEASE] at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1060) 〜[thymeleaf-2.1.5.RELEASE.jar:2.1.5.RELEASE] at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1011)〜[thymeleaf-2.1.5.RELEASE.jar:2.1.5。發佈] at org.thymeleaf.spring4.view.ThymeleafView.renderFragment(ThymeleafView.java:335)〜[thymeleaf-spring4-2.1.5.RELEASE.jar:2.1.5.RELEASE] at org.thymeleaf.spring4。 view.ThymeleafView.render(ThymeleafView.java:190)〜[thymeleaf-spring4-2.1.5.RELEASE.jar:2.1.5.RELEASE] at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java: 1286)〜[spring-webmvc-4.3.10.RELEASE.jar:4.3.10.RELEASE] at org.springframework.web.servlet.DispatcherServlet.pr在org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:984)〜[[]中調用ocessDispatchResult(DispatcherServlet.java:1041)〜[spring-webmvc-4.3.10.RELEASE.jar:4.3.10.RELEASE] 〜 spring-webmvc-4.3.10.RELEASE.jar:4.3.10.RELEASE] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)〜[spring-webmvc-4.3.10.RELEASE。 jar:4.3.10.RELEASE] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)〜[spring-webmvc-4.3.10.RELEASE.jar:4.3.10.RELEASE] at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)〜[spring-webmvc-4.3.10.RELEASE.jar:4.3.10.RELEASE] at javax.servlet.http.HttpServlet.service( HttpServlet.java:635)〜[tomcat-embed-core-8.5.16.jar:8.5.16] at org.springframework.web.servle t.FrameworkServlet.service(FrameworkServlet.java:846)〜[spring-webmvc-4.3.10.RELEASE.jar:4.3.10.RELEASE] at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) 〜[tomcat-embed-core-8.5.16.jar:8.5.16] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)〜[tomcat-embed-core-8.5.16。 jar:8.5.16] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)〜[tomcat-embed-core-8.5.16.jar:8.5.16] at org.apache。 tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)〜[tomcat-embed-websocket-8.5.16.jar:8.5.16] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain。 java:193)〜[tomcat-embed-core-8.5.16.jar:8.5.16] at org.apache.catalina.core.ApplicationFilterChain。doFilter(ApplicationFilterChain.java:166)〜[tomcat-embed-core-8.5.16.jar:8.5.16] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)〜[spring- web-4.3.10.RELEASE.jar:4.3.10.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)〜[spring-web-4.3.10.RELEASE.jar: 4.3.10.RELEASE] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)〜[tomcat-embed-core-8.5.16.jar:8.5.16] at org.apache。 catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)〜[tomcat-embed-core-8.5.16.jar:8.5.16] at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java: 105)〜[spring-web-4.3.10.RELEASE.jar:4.3.10.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)〜[spring-web-4.3.10.RELEASE.jar:4.3.10.RELEASE] at org.apache.catalina.core。 ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)〜[tomcat-embed-core-8.5.16.jar:8.5.16] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)〜[ tomcat-embed-core-8.5.16.jar:8.5.16] at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81)〜[spring-web-4.3.10.RELEASE.jar: 4.3.10.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)〜[spring-web-4.3.10.RELEASE.jar:4.3.10.RELEASE] at org。 apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)〜[tomcat-embed-core -8.5.16.jar:8.5.16] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)〜[tomcat-embed-core-8.5.16.jar:8.5.16] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)〜[spring-web-4.3.10.RELEASE.jar:4.3.10.RELEASE] at org.springframework.web.filter.OncePerRequestFilter .doFilter(OncePerRequestFilter.java:107)〜[spring-web-4.3.10.RELEASE.jar:4.3.10.RELEASE] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)〜 [tomcat-embed-core-8.5.16.jar:8.5.16] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)〜[tomcat-embed-core-8.5.16.jar :8.5.16] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.j ava:198)〜[tomcat-embed-core-8.5.16.jar:8.5.16] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)[tomcat-embed-core-8.5 .16.jar:8.5.16] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478)[tomcat-embed-core-8.5.16.jar:8.5.16] at org。 apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)[tomcat-embed-core-8.5.16.jar:8.5.16] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java :80)[tomcat-embed-core-8.5.16.jar:8.5.16] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)[tomcat-embed-core-8.5.16 .jar:8.5.16] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)[tomcat-embed-core-8.5.16.jar:8.5.16]org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight()); .java:66)[tomcat-embed-core-8.5.16.jar:8.5.16] at org.apache.coyote.AbstractProtocol $ ConnectionHandler.process(AbstractProtocol.java:868)[tomcat-embed-core-8.5 .16.jar:8.5.16] at org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun(NioEndpoint.java:1455)[tomcat-embed-core-8.5.16.jar:8.5.16] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)[tomcat-embed-core-8.5.16.jar:8.5.16] at java.util.concurrent.ThreadPoolExecutor.runWorker (Unknown Source)[na:1.8.0_144] at java.util.concurrent.ThreadPoolExecutor $ Worker.run(Unknown Source)[na:1.8。0_144] at org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61)[tomcat-embed-core-8.5.16.jar:8.5.16] at java.lang.Thread .RUN(來源不明)NA:1.8.0_144]

+0

你檢查,如果'appelService.findAppelById(ID)'是'返回null'? – davioooh

+0

您能否粘貼錯誤的整個堆棧跟蹤?也許會有提示,因爲你的代碼看起來好像IMO。 –

+0

@davioooh:它返回null –

回答

1

通過更換您的TD語法:

<td><a th:href="@{'/appel/edit/' + ${appel.id}}">edit</a></td> 
+0

謝謝so muchhhhh it workes now –